Python 列表与元组的速度比较

枫铃3年前 (2021-09-30)Python249

IPython 中用 magic 命令 %timeit 来计时。

比较生成速度

%timeit [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]

1000000 loops, best of 3: 456 ns per loop

%timeit (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)

10000000 loops, best of 3: 23 ns per loop

可以看到,元组的生成速度要比列表的生成速度快得多,相差大概一个数量级。

比较遍历速度

产生内容相同的随机列表和元组:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
from numpy.random import rand
values = rand(10000,4)
lst = [list(row) for row in values]
tup = tuple(tuple(row) for row in values)

 %timeit for row in lst: list(row)

100 loops, best of 3: 4.12 ms per loop

%timeit for row in tup: tuple(row)

100 loops, best of 3: 2.07 ms per loop

在遍历上,元组和列表的速度表现差不多。
比较遍历和索引速度:

%timeit for row in lst: a = row[0] + 1

The slowest run took 12.20 times longer than the fastest. This could mean that an intermediate result is being cached 
100 loops, best of 3: 3.73 ms per loop

%timeit for row in tup: a = row[0] + 1

100 loops, best of 3: 3.82 ms per loop

元组的生成速度会比列表快很多,迭代速度快一点,索引速度差不多。

相关文章

Python条件判断if、for、while if

if条件判断 if 条...

Python类的约束以及super()剖析

1.类的约束 第一版: class WechatPay: def pay(self): print("微信支付")...

Python3中 对local和nonlocal 关键字的改善认识(新手向)

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。 nonlocal用于声明,修改嵌套作用域(enclosi...

给Python的类和对象动态增加属性和方法

通常我们会将编程语言分为...

python3输入的input()坑

如下所示:...

不要再问我Python2和Python3的Unicode 问题啦!

写在之前 字符编码问题几乎是会跟随我们整个编程生涯的一大魔障,一不小心各种玄学的问题就会接踵而至,防不胜防,尤其是...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。