我正在阅读有关python速度的一些最佳实践,发现这说:
与搜索序列O(n)相比,使用集合和词典的成员资格测试O(1)快得多。
测试“ a in b”时,b应该是集合或字典,而不是列表或元组。
但是如果说我有一个列表long_list
,我想找出项目list_item
是否在long_list
:
list_item in long_list
在任何情况下,这样做会更快吗?
list_item in Set(long_list)
我认为设置或决定转换的列表本身平均应为O(n)。(?)
还是只使用我正在使用的任何数据类型总是更好?
如果您要在上进行多次查找long_list
,那是值得的。否则,事实并非如此。
$ python3 -m timeit -s 'x = list(range(10000))' '1234 in x'
100000 loops, best of 3: 5.71 usec per loop
$ python3 -m timeit -s 'x = list(range(10000))' '1234 in set(x)'
10000 loops, best of 3: 61.4 usec per loop
$ python3 -m timeit -s 'x = set(list(range(10000)))' '1234 in x'
10000000 loops, best of 3: 0.0198 usec per loop
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句