大佬教程收集整理的这篇文章主要介绍了为什么元组比Python中的列表快?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所报告的“构建速度”比率仅适用于 元组(其项目由文字表示的元组)。仔细观察(并在您的机器上重复-您只需要在sHell /命令窗口中键入命令即可!)…:
$ python3.1 -mtimeit -s'x,y,z=1,2,3' '[x,y,z]'
1000000 loops, best of 3: 0.379 usec per loop
$ python3.1 -mtimeit '[1,2,3]'
1000000 loops, best of 3: 0.413 usec per loop
$ python3.1 -mtimeit -s'x,y,z=1,2,3' '(x,y,z)'
10000000 loops, best of 3: 0.174 usec per loop
$ python3.1 -mtimeit '(1,2,3)'
10000000 loops, best of 3: 0.0602 usec per loop
$ python2.6 -mtimeit -s'x,y,z=1,2,3' '[x,y,z]'
1000000 loops, best of 3: 0.352 usec per loop
$ python2.6 -mtimeit '[1,2,3]'
1000000 loops, best of 3: 0.358 usec per loop
$ python2.6 -mtimeit -s'x,y,z=1,2,3' '(x,y,z)'
10000000 loops, best of 3: 0.157 usec per loop
$ python2.6 -mtimeit '(1,2,3)'
10000000 loops, best of 3: 0.0527 usec per loop
我没有在3.0上进行测量,因为我当然没有它-它已经完全过时了,绝对没有理由保留它,因为3.1在各个方面都优于它(Python 2.7,如果您可以升级到它,每个任务的执行速度比2.6快20%,而2.6比3.1快。因此,如果您非常在意性能,Python 2.7确实是您应该唯一的发行版本争取!)。
无论如何,这里的关键点在于,在每个Python版本中,从常量文字中构造列表的速度大约与从变量引用中构造值的速度相同或稍慢。但是元组的行为却大不相同- 从常量文字中构建元组通常比从变量引用的值中构建元组快三倍!您可能想知道这怎么可能,对吧?
答案:由常量文字组成的元组可以很容易地被Python编译器识别为一个不变的常量文字本身:因此,当编译器将源代码转换为字节码并保存在“常量表”中时,它实际上只构建了一次相关功能或模块的“”。当这些字节码执行时,它们只需要恢复预构建的常量元组-嘿,很高兴!-)
这种简单的优化无法应用于列表,因为列表是可变对象,因此至关重要的是,如果相同的表达式(如[1, 2,
3]
执行两次)(在循环中-timeit
模块代表您执行循环;-),每次都会重新构造一个新的列表对象-
并且这种构造(例如当编译器无法简单地将其标识为编译时常量和不可变对象时的元组构造)确实需要一些时间。
话虽这么说,元组构造(实际上必须同时发生两种构造)仍然快于列表构造的两倍- 这种 差异可以用元组的纯粹性来解释,其他答案也多次提到。但是,这种简单性并不能解决六倍或更多倍的加速问题,正如您观察到的那样,如果您只比较列表和元组的构造以及简单常量文字作为它们的项!_)
以上是大佬教程为你收集整理的为什么元组比Python中的列表快?全部内容,希望文章能够帮你解决为什么元组比Python中的列表快?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。