2024-04-26 12:52:11 发布
网友
我在python中有一个大的(~106)float列表,我反复调用if number in list。列表不变。有没有什么方法可以加快这个过程,比如通过对列表进行排序,并利用它被排序的优势?在
if number in list
如果试图计算两个选项的时间复杂度,see this handy reference.
您应该将列表更改为set(如果set为常量,则为frozenset)。在
示例:
l = [1, 2, 3] s = set(l) # frozenset(l) obj in l # O(n) lookup obj in s # O(1) lookup
您可以将列表转换为一个集合,这可能需要大量的内存和计算时间来创建(这将删除重复项)。在
或者,您可以使用模块bisect来利用列表已排序的事实。第一个搜索时间为O(1),第二个搜索时间为O(log(n))。在
O(1)
O(log(n))
如果试图计算两个选项的时间复杂度,see this handy reference.
您应该将列表更改为set(如果set为常量,则为frozenset)。在
示例:
您可以将列表转换为一个集合,这可能需要大量的内存和计算时间来创建(这将删除重复项)。在
或者,您可以使用模块bisect来利用列表已排序的事实。第一个搜索时间为
O(1)
,第二个搜索时间为O(log(n))
。在相关问题 更多 >
编程相关推荐