python中set为什么查找最快_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秒左右。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值