Skip to main content
 首页 » 编程设计

Python比较元组

2025年05月04日19duanxz

你好,我想在 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