我知道Python中的集合具有O(1)的查找时间,而列表具有O(n)的查找时间,但我很好奇当容器大小变大时,将列表转换为集合才变得有价值。换句话说,如果我调用以下内容:
这样做是否比以下调用更有效率?
更重要的是,什么是交叉长度?
编辑:共识认为,这完全取决于用户定义对象的哈希方法的效率,但对于像字符串、整数等基元类型,截止点大约在1-3。
arr = [1, 2, 3]
for i in range(1000000):
random.randint(1,3) in arr
这样做是否比以下调用更有效率?
s = set([1, 2, 3])
for i in range(1000000):
random.randint(1,3) in s
更重要的是,什么是交叉长度?
编辑:共识认为,这完全取决于用户定义对象的哈希方法的效率,但对于像字符串、整数等基元类型,截止点大约在1-3。
timeit
来测试它 ;) - Joel Cornett