How to efficiently compare two unordered lists (not sets) in Python?

前端 未结 10 1148
刺人心
刺人心 2020-11-22 15:00
a = [1, 2, 3, 1, 2, 3]
b = [3, 2, 1, 3, 2, 1]

a & b should be considered equal, because they have exactly the same elements, only in different

10条回答
  •  借酒劲吻你
    2020-11-22 15:53

    If you know the items are always hashable, you can use a Counter() which is O(n)
    If you know the items are always sortable, you can use sorted() which is O(n log n)

    In the general case you can't rely on being able to sort, or has the elements, so you need a fallback like this, which is unfortunately O(n^2)

    len(a)==len(b) and all(a.count(i)==b.count(i) for i in a)
    

提交回复
热议问题