你好,我想在 Python 中将一个列表与另一个列表进行比较,其中元素的顺序无关紧要
例如
list=[1,2,3]
应该等于 list2=[3,2,1] 并且等于 list3=[3,1,2] 等。我想动态地做因为我不知道列表中有多少元素?有什么快速的方法吗?我想出的唯一方法是在每个列表中搜索另一个列表的元素,但这有 O(n^2)。我也无法对列表进行排序,因为在我的实现中,列表是列表的列表。我只是想要一个简单版本的问题的答案,然后修改它!你能帮帮我吗?
请您参考如下方法:
您可以简单地将列表转换为集合,然后简单地检查它们是否相等
list1, list2, list3 = [1, 2, 3], [2, 3, 1], [1, 2, 3, 4]
print set(list1) == set(list2) # True
print set(list2) == set(list3) # False
print set(list1) == set(list3) # False
如果要确保元素只存在与另一个列表中相同的次数,可以使用collections.counter。 ( Thanks @delnan ),像这样
list1, list2, list3, list4 = [1, 2, 3], [2, 3, 1], [1, 2, 3, 4], [1, 2, 3, 3]
from collections import Counter
print Counter(list1) == Counter(list2) # True
print Counter(list2) == Counter(list3) # False
print Counter(list1) == Counter(list3) # False
print Counter(list1) == Counter(list4) # False
