我一直读到集合操作是 O(1),最坏的情况是 O(N),而检查列表成员资格是 O(N)。所以当一个朋友在添加列表之前检查一个列表是否在列表中时,我建议使用一组元组来代替。但是,在对它们计时,列表列表更快!为什么是这样?将元组添加到集合中如何比迭代列表列表慢?
这是一些示例测试代码
import time
a = []
b = []
for i in range(10000):
a.append(list(range(100)))
b.append(tuple(range(100)))
p=[]
tic=time.perf_counter()
for i in range(100):
if a[i] not in p:
p.append(a[i])
toc=time.perf_counter()
print(toc-tic) # Was about 100ms
q=set()
tic=time.perf_counter()
for i in range(100):
q.add(b[i])
toc=time.perf_counter()
print(toc-tic) # Was about 169ms
r=dict()
tic=time.perf_counter()
for i in range(100):
r[b[i]]=None
toc=time.perf_counter()
print(toc-tic) # Was about 143ms