python list、dict、set 查询速度对比

本文通过测试展示了在不同数据规模下,Python中的list、dict和set查询速度的显著差异。随着数据量增加,set查询速度最快,dict次之,list最慢,性能差距可达上万倍。字典和集合利用哈希存储提高查询效率,而列表则依赖线性搜索。此外,还探讨了空list和空方括号的创建时间差异。
摘要由CSDN通过智能技术生成

python list、dict、set 查询速度对比

平常使用的时候,可能对于这三种类型的查询无感,因为数据量小的时候查询速度都很快,所以无感觉,今天来试试。

一百万数据测试

=b list=
0.013915400000000133
=c dict=
2.100000000115898e-06
=d set=
9.999999996956888e-07

一千万数据测试

=b list=
0.12139450000000096
=c dict=
2.9000000001389026e-06
=d set=
1.1000000004202093e-06

一亿数据测试

=b list=
14.738766999999996
=c dict=
0.0010382000000106473
=d set=
0.0005590999999753876

测试代码
b = []
c = {}
d = set()

for i in range(1000000):  # 此处调整数据量
    num = random.randint(0, 10000000000)

    b.append(num)
    c[num] = 1
    d.add(num)

print('=========b list=========')
time1 = time.perf_counter()
if 9999 in b:
    print("yes")
time2 = time.perf_counter()
print(time2 - time1)
print('=========c dict=========')
time1 = time.perf_counter()
if 9999 in c:
    print("yes")
time2 = time.perf_counter()
print(time2 - time1)
print('=========d set=========')
time1 = time.perf_counter()
if 9999 in d:
    print("yes")
time2 = time.perf_counter()
print(time2 - time1)
结论

从上面数据来看,set > dict >> list
list查询速度最慢,性能上差距上万倍

字典: dict会把所有的key变成hash 表,然后将这个表进行排序,这样,你通过data[key]去查data字典中一个key的时候,python会先把这个key hash成一个数字,然后拿这个数字到hash表中看没有这个数字, 如果有,拿到这个key在hash表中的索引,拿到这个索引去与此key对应的value的内存地址那取值就可以了。
集合: 集合的存储方式和字典key类似,都是采用hash存储,相同的值对应相同的地址,所以set中没有相同值,也是无序的

冷知识:你知道这两个有什么区别吗,哪个更快?

a = list()
b = []

有兴趣的小伙伴尝试一下


t1 = time.perf_counter()
a = list()
t2 = time.perf_counter()
print(f"a = list() cost :{t2 - t1}")

t1 = time.perf_counter()
b = []
t2 = time.perf_counter()
print(f"b = []     cost :{t2 - t1}")

Python中的list列表),tuple(元组),dict字典)和set集合)是常见的数据结构。 1. 列表list)是一个可变的、有序的元素集合。可以通过方括号[]来创建一个列表列表中的元素可以是任意类型,并且可以重复。列表提供了丰富的操作方法,如添加元素、删除元素、获取元素等。 2. 元组(tuple)是一个不可变的、有序的元素集合。可以通过小括号()来创建一个元组,元组中的元素可以是任意类型。元组一旦创建后,不能修改其元素的值。元组通常用于存储不可变的数据,如坐标位置、颜色等。 3. 字典dict)是一种键值对(key-value)的数据结构。可以通过花括号{}来创建一个字典字典中的元素是无序的,并且每个元素由一个键和对应的值组成。字典中的键必须是唯一的,而值可以是任意类型。字典提供了根据键获取值、添加键值对、删除键值对等操作。 4. 集合set)是一个无序的、不重复的元素集合。可以通过花括号{}或set()函数来创建一个集合集合中的元素不能重复。集合提供了并集、交集、差集等常用的数学运算操作,同时还支持元素的添加、删除等操作。 在编程中,根据具体的需求选择使用合适的数据结构能够更高效地处理数据,并且提供相应的操作方法方便开发。以上是对Python中常见的列表、元组、字典集合的简要介绍。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值