Python二元赋值实用技巧解析


Posted in Python onOctober 25, 2019

这篇文章主要介绍了Python二元赋值实用技巧解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

python支持类似于a += 3这种二元表达式。比如:

a += 3 -> a = a + 3
 a -= 3 -> a = a - 3
 a *= 3 -> a = a * 3
 ...

在python中的某些情况下,这种二元赋值表达式可能比普通的赋值方式效率更高些。原因有二:

二元赋值表达式中,a可能会是一个表达式,它只需计算评估一次,而a = a + 3中,a要计算两次。

对于可变对象,可以直接在原处修改得到修改后的值,而普通的一元赋值表达式必须在内存中新创建一个修改后的数据对象,并赋值给变量

第一点无需解释。关于第二点,看下面的例子:

L = [1,2,3]
 L = L + [4] # (1):慢
 L += [4] # (2):快
 L.append(4) # (3):快,等价于(2)

 L = L + [5,6] # (4):慢
 L += [5,6] # (5):快
 L.extend([5,6]) # (6):快,等价于(5)

对于上面(1)和(4)的一元赋值表达式,先取得L,然后创建一个新的列表对象,将L拷贝到新列表对象中,并将4或5,6放进新列表对象,最后赋值给L。这个过程中涉及到了几个步骤:新分配内存、内存中列表拷贝、放入新数据。

而(2)(3)是等价的,(5)(6)也是等价的,它们都是直接在内存中的原始列表处修改,不会有拷贝操作,新建的数据对象仅仅只是一个元素。

按照理论上来说,确实二元赋值方式要效率高一些,但要注意的是,列表中保存的只是各元素的引用,所以拷贝列表也仅仅只是拷贝一点引用,这是微乎其微的开销。所以一元赋值和二元赋值的差距在这一点的性能上基本没差距,主要的差距还在于一元、二元赋值方式可能存在的表达式不同评估次数。

总的来说,使用二元赋值表达式通常可以作为可变对象赋值的一种优化手段。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python用字典统计单词或汉字词个数示例
Apr 22 Python
深入解析Python中的list列表及其切片和迭代操作
Mar 13 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
python基础 range的用法解析
Aug 23 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
Django中文件上传和文件访问微项目的方法
Apr 27 Python
python代码如何注释
Jun 01 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 #Python
基于Python实现签到脚本过程解析
Oct 25 #Python
python实现大学人员管理系统
Oct 25 #Python
Python队列、进程间通信、线程案例
Oct 25 #Python
python银行系统实现源码
Oct 25 #Python
python Event事件、进程池与线程池、协程解析
Oct 25 #Python
python实现简单银行管理系统
Oct 25 #Python
You might like
php中将数组存到文件里的实现代码
2012/01/19 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
js实现双色球效果
2020/08/02 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
TensorFlow神经网络优化策略学习
2018/03/09 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
Unix里面如何在后台运行程序
2016/10/14 面试题
求职信的正确写法
2014/07/10 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
检讨书格式
2015/05/07 职场文书
老人院义工活动感想
2015/08/07 职场文书
交通安全主题班会
2015/08/12 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
golang 实现并发求和
2021/05/08 Golang
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers