我如何比较python中的两个列表,并返回第二个需要具有相同值而不管顺序?

Som*_*DOS 10 python comparison list

a = [1, 2, 3, 4]
b = [2, 4, 3, 1]
c = [2, 3]
Run Code Online (Sandbox Code Playgroud)

比较a到b时,应返回True:所有项目a都显示在中b,所有项目b都显示在中a.

比较ac,应该返回False:有些项目a不存在c.

什么是pythonic方式呢?

Ign*_*ams 15

排序,然后比较.

sorted(a) == sorted(b)
Run Code Online (Sandbox Code Playgroud)


mar*_*r75 8

使用集合或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
Run Code Online (Sandbox Code Playgroud)

使用集合优于任何列表方法的最大优点是它具有高可读性,您没有改变原始可迭代,即使在a很大且b很小的情况下它也可以很好地执行(检查a和b是否具有相同的长度)首先是一个很好的优化,如果你经常期望这种情况,并且使用正确的数据结构是pythonic.

  • 可能的缺点是集合中不允许有重复项。 (3认同)