2024-03-28 23:38:10 发布
网友
我需要检查两个列表的一致性,例如,如果第一个列表不包含第二个列表中不存在的元素,并且相似元素的count相同,则返回{}。现在,我得出了以下结论:
count
def is_consistent(spec_a, spec_b): for a in spec_a: if spec_a.count(a) != spec_b.count(a): return False return True
但我需要一个循环来完成,所以我想知道,能不能更快?在
如果我能正确理解这个问题,也许您可以使用Counter:
Counter
from collections import Counter def is_consistent(spec_a, spec_b): c1 = Counter(spec_a) c2 = Counter(spec_b) result = c1 - c2 return all(result[key] == 0 for key in c1)
循环是不可避免的,它总是以某种形式存在。事实上,我这里有3个循环。(每个Counter中有一个,然后是最后最明显的一个)。但是,我的解决方案避免的操作是.count,这是另一个嵌套在内的隐式循环。在
.count
嵌套循环通常是您希望消除的循环,因为如果外部循环迭代N次,而内部循环迭代N次,则总迭代次数为N*N次。比较一下我的解决方案,它只有~3*N个迭代(3个循环,每个循环大约有N个迭代)。如果N很大,您可以看到这将如何导致大量操作被保存。在
N
如果我能正确理解这个问题,也许您可以使用
Counter
:循环是不可避免的,它总是以某种形式存在。事实上,我这里有3个循环。(每个
Counter
中有一个,然后是最后最明显的一个)。但是,我的解决方案避免的操作是.count
,这是另一个嵌套在内的隐式循环。在嵌套循环通常是您希望消除的循环,因为如果外部循环迭代N次,而内部循环迭代N次,则总迭代次数为N*N次。比较一下我的解决方案,它只有~3*N个迭代(3个循环,每个循环大约有N个迭代)。如果
N
很大,您可以看到这将如何导致大量操作被保存。在相关问题 更多 >
编程相关推荐