a = [1, 2, 3, 4]
b = [2, 4, 3, 1]
c = [2, 3]
将a与b进行比较时,应返回True
:a
中的所有项目都显示在b
中,b
中的所有项目都显示在a
中}。
将[{1}}与a
进行比较时,应该返回c
:False
中的a
项中不存在{/ 1}}。
pythonic 的方法是什么?
答案 0 :(得分:14)
排序,然后比较。
sorted(a) == sorted(b)
答案 1 :(得分:7)
使用sets或frozensets。
set_a = {1, 2, 3, 4} #python 2.7 or higher set literal, use the set(iter) syntax for older versions
set_b = {2, 4, 4, 1}
set_a == set_b
set_a - set_b == set_b - set_a
使用集合优于任何列表方法的最大优点是它具有高可读性,您没有改变原始可迭代,即使在a很大且b很小的情况下它也可以很好地执行(检查a和b是否有如果您经常考虑这种情况,那么相同的长度首先是一个很好的优化,并且使用正确的数据结构是pythonic。
答案 2 :(得分:2)
使用set
s:
In [4]: set(a) == set(b)
Out[4]: True
In [5]: set(a) == set(c)
Out[5]: False
答案 3 :(得分:2)
将它们变成集合:
>>> set([1,2,3,4]) == set([2,4,3,1])
True
>>> set([2, 3]) == set([1,2,3,4])
False
如果您的列表包含重复项,则您还必须比较它们的长度。设置折叠副本。