python的列表(list)和集合(set)速度对比,set速度惊人
最近用Pandas做一个七星彩数据分析,偶尔用到list做数据存储。感觉list有点慢,突然心血来潮,想比较下list速度。
list对比对象只能是set,set存储根据哈希值来排序。我以为set只是比list快100倍左右,没想到结果是:
测试环境和条件:windows10+py3.7+pycharm2017.2,list和set都是随机的填写100万条数据,搜索一千次,记录各自的损耗时间。
代码如下:
#测试集合和list的搜索速度,各插入100万条数据
import time
import random
l=[random.randrange(0,1000000) for x in range(0,1000000)]
s={x for x in range(0,1000000)}
print('set size=',len(s))
#测试 list,搜索 1000次,看花费时间
tick = time.time()
for i in range(0,1000):
x = random.randrange(0,1000000)
b = x in l
print('list index of time:',time.time()-tick)
#测试 list,搜索 1000次,看花费时间
tick = time.time()
for i in range(0,1000):
x = random.randrange(0,1000000)
b = x in s
print('set index of time:',time.time()-tick)
output:
set size= 1000000
list index of time: 11.799197673797607
set index of time: 0.0019888877868652344
#测试结果,set 速度比list快 5500 倍,不比不知道,一比吓一跳。
当list加到一千万条,,,1000次搜索已经无法等待了,崩溃。而set的1000万条,1000次搜索依然是0.002秒左右。