附件:
02.09 Python 列表与元组的速度比较.html
280.4K ·
百度网盘
正文:
列表与元组的速度比较
IPython 中用 magic 命令 %timeit 来计时。
比较生成速度
In [1]:
%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]
184 ns ± 4.92 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
In [2]:
%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)
14 ns ± 0.516 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)
可以看到,元组的生成速度要比列表的生成速度快得多,相差大概一个数量级。
比较遍历速度
产生内容相同的随机列表和元组:
In [3]:
from numpy.random import rand values = rand(10000,4) lst = [list(row) for row in values] tup = tuple(tuple(row) for row in values)
In [4]:
%timeit for row in lst: list(row)
2.05 ms ± 57.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [5]:
%timeit for row in tup: tuple(row)
1.09 ms ± 65.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
在遍历上,元组和列表的速度表现差不多。
比较遍历和索引速度:
In [6]:
%timeit for row in lst: a = row[0] + 1
2.39 ms ± 30.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [7]:
%timeit for row in tup: a = row[0] + 1
2.53 ms ± 336 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
元组的生成速度会比列表快很多,迭代速度快一点,索引速度差不多。