gpt4 book ai didi

python - 如何有效地比较两个无序列表(不是集合)?

转载 作者:IT老高 更新时间:2023-10-28 21:05:09 33 4
gpt4 key购买 nike

a = [1, 2, 3, 1, 2, 3]
b = [3, 2, 1, 3, 2, 1]

a & b 应该被认为是相等的,因为它们具有完全相同的元素,只是顺序不同。

问题是,我的实际列表将包含对象(我的类实例),而不是整数。

最佳答案

O(n): Counter() 方法是最好的(如果你的对象是可散列的):

def compare(s, t):
return Counter(s) == Counter(t)

O(n log n): sorted() 方法是第二好的(如果你的对象是可订购的):

def compare(s, t):
return sorted(s) == sorted(t)

O(n * n):如果对象既不是可散列的,也不是可排序的,则可以使用相等:

def compare(s, t):
t = list(t) # make a mutable copy
try:
for elem in s:
t.remove(elem)
except ValueError:
return False
return not t

关于python - 如何有效地比较两个无序列表(不是集合)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828867/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com