可能重复:
Determine if 2 lists have the same elements, regardless of order?
Match two lists of letters in Python
我有列表a
和列表b
。所以我需要找到,如果列表有相同的元素。我不知道,但我正在考虑使用collections
。
答案 0 :(得分:4)
假设您不关心订单。这里有几个选项,最佳解决方案取决于列表的内容。以下是按优先顺序(和限制)的几种可能性:
如果没有重复项,并且所有项目都可以清除:
set(a) == set(b)
如果有重复项,且所有项目属于同一类型:
sorted(a) == sorted(b)
如果有重复项且列表可能有混合类型,并且所有类型都可以清除:
collections.Counter(a) == collections.Counter(b)
如果存在重复项,则列表可能具有混合类型,并且某些元素可能不具有可清除性(必须有更好的方法来执行此操作,但我想出的是将每个元素转换为元组使用类型的字符串表示形式,后跟值):
keyfunc = lambda x: (str(type(x)), x)
sorted(a, key=keyfunc) == sorted(b, key=keyfunc)
答案 1 :(得分:0)
>>> all(x in b for x in a)