电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 實現兩個變量值進行交換的n種操作

瀏覽:7日期:2022-06-17 17:03:44
python 兩個變量值交換

方法一:

c = 0c= aa= bb= c

方法二:

a,b = b,a

這是python的基本方法

方法三:(只用兩個變量實現)

a = a+bb = a-ba = a-bpython兩個數值互換(淺析a,b=b,a原理)

python交換兩個值得方法非常簡單,即a,b=b,a,一步操作就交換了兩個值,那么這是為什么呢?

真相:

Python的變量并不直接存儲值,而只是引用一個內存地址,交換變量時,只是交換了引用的地址。

先看下面這段程序:

import disdef func(a,b): a,b=b,a print(a,b) a=10b=20func(a,b)dis.dis(func)

一般來說一個Python語句會對應若干字節碼指令,Python的字節碼是一種類似匯編指令的中間語言,但是一個字節碼指令并不是對應一個機器指 令(二進制指令),而是對應一段C代碼,而不同的指令的性能不同,所以不能單獨通過指令數量來判斷代碼的性能,而是要通過查看調用比較頻繁的指令的代碼來 確認一段程序的性能。

一個Python的程序會有若干代碼塊組成,例如一個Python文件會是一個代碼塊,一個類,一個函數都是一個代碼塊,一個代碼塊會對應一個運行的上下文環境以及一系列的字節碼指令。

dis的作用

dis模塊主要是用來分析字節碼的一個內置模塊,經常會用到的方法是dis.dis([bytesource]),參數為一個代碼塊,可以得到這個代碼塊對應的字節碼指令序列。

代碼輸出結果

python 實現兩個變量值進行交換的n種操作

其中只看前面為12的結果就行了(在我的編譯器里,交換的那一行代碼在第12行)

可以看出主要是ROT_TWO指令的功勞:

查閱python文檔可以知道有ROT_TWO (源碼1398行),ROT_THREE(源碼1406行), ROT_FOUR這樣的指令,可以直接

交換兩個變量、三個變量、四個變量的值

在python3.4的源碼中查閱ceval.c文件可以看到:

TARGET(ROT_TWO) { PyObject *top = TOP(); PyObject *second = SECOND(); SET_TOP(second); SET_SECOND(top); FAST_DISPATCH(); }TARGET(ROT_THREE) { PyObject *top = TOP(); PyObject *third = THIRD(); SET_SECOND(third); FAST_DISPATCH();}附:python值的交換

變量的每一次初始化,都開辟了一個新的空間,將新內容的地址賦值給變量。對于下圖來說,我們重復的給str1賦值,其實在內存中的變化如圖:

python 實現兩個變量值進行交換的n種操作

從上圖我們可以看出,str1在重復的初始化過程中,是因為str1中存儲的元素地址由’hello world’的地址變成了’new hello world’的。

對于復雜的數據類型來說,改變其內部的值對于變量的影響:

python 實現兩個變量值進行交換的n種操作

python 實現兩個變量值進行交換的n種操作

當對列表中的元素進行一些增刪改的操作的時候,是不會影響到lst1列表本身對于整個列表地址的,只會改變其內部元素的地址引用。

可是當我們對于一個列表重新初始化(賦值)的時候,就給lst1這個變量重新賦予了一個地址,覆蓋了原本列表的地址,這個時候,lst1列表的內存id就發生了改變。上面這個道理用在所有復雜的數據類型中都是一樣的。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 定制/定做冲锋衣厂家/公司-订做/订制冲锋衣价格/费用-北京圣达信 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 厂房出租_厂房出售_产业园区招商_工业地产 - 中工招商网 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 打包钢带,铁皮打包带,烤蓝打包带-高密市金和金属制品厂 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 动力配电箱-不锈钢配电箱-高压开关柜-重庆宇轩机电设备有限公司 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 环球电气之家-中国专业电气电子产品行业服务网站! | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 美能达分光测色仪_爱色丽分光测色仪-苏州方特电子科技有限公司 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂 | 四川成都干燥设备_回转筒干燥机_脉冲除尘器_输送设备_热风炉_成都川工星科机电设备有限公司 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 【连江县榕彩涂料有限公司】官方网站| 回收二手冲床_金丰旧冲床回收_协易冲床回收 - 大鑫机械设备 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商| 校车_校车价格_19座幼儿园校车_幼儿园校车_大鼻子校车 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 电缆接头_防水接头_电缆防水接头_防水电缆接头_上海闵彬 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 苏州教学设备-化工教学设备-环境工程教学模型|同科教仪 |