-3

可能重复:
确定 2 个列表是否具有相同的元素,无论顺序如何?
在 Python 中匹配两个字母列表

我有 lista和 list b。所以我需要找到,如果列表具有相同的元素。我不知道,但我正在考虑使用collections.

4

2 回答 2

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)
    
于 2012-11-05T22:25:06.510 回答
0
>>> all(x in b for x in a)
于 2012-11-05T22:21:45.447 回答