python list与dict

在判断某个元素是否在列表和字典中的时候,这时候能够用字典进行存储,尽量不要用list。

字典的判断是O(1)的,list需要遍历,所以是O(n)。必要时候可以把list转换为set。不要直接用list进行。


import time

count = 1
start_time = time.time()
a = set(range(40001, 49999))
for i in range(1000000):
    if i in a:
        count += 1

end_time = time.time()
print count, end_time - start_time


count = 1
for i in range(1000000):
    b = set(range(40001, 49999))
    if i in b:
        count += 1
start_time = time.time()
print count, start_time - end_time
    
这段代码中 只是set(range(40001, 49999))位置的差别,但是性能却有着非常大的差距。


我认为,主要因为是每次都需要把list转换成set的耗时。


在list和dict的运用中,深有体会。我的程序中本来用list,100万的数据量跑了50多分钟,把list修改为dict之后,

时间变成了几秒。

因为list整个程序跑了4个半小时,修改只用大概10分钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值