#!/usr/bin/env python # coding: utf-8 # # 列表与元组的速度比较 # IPython 中用 `magic` 命令 `%timeit` 来计时。 # ## 比较生成速度 # In[1]: get_ipython().run_line_magic('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]') # In[2]: get_ipython().run_line_magic('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)') # 可以看到,元组的生成速度要比列表的生成速度快得多,相差大概一个数量级。 # ## 比较遍历速度 # 产生内容相同的随机列表和元组: # 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]: get_ipython().run_line_magic('timeit', 'for row in lst: list(row)') # In[5]: get_ipython().run_line_magic('timeit', 'for row in tup: tuple(row)') # 在遍历上,元组和列表的速度表现差不多。 # ## 比较遍历和索引速度: # In[6]: get_ipython().run_line_magic('timeit', 'for row in lst: a = row[0] + 1') # In[7]: get_ipython().run_line_magic('timeit', 'for row in tup: a = row[0] + 1') # 元组的生成速度会比列表快很多,迭代速度快一点,索引速度差不多。