如何将一个列表与另一个列表进行比较?

时间:2020-04-29 18:20:06

标签: python list

在第一部分中,我有2个相等但未排序的列表。当我检查它们是否相等时,打印功能返回“ False”,这很有意义。

listx1, listx2=[9, 7, 5, 3], [3, 5, 7, 9] 
print(listx1 == listx2)     #returns False

当我对该列表进行排序时,打印功能将返回“ True”。至此,我明白了:

print(listx1.sort() == listx2.sort())   #returns True

现在,我使用2个不相等的列表进行比较。这次,print函数也返回False,这很有意义。

listx3, listx4 =[5, 3, 2, 7], [3, 5, 7, 9]
print(listx3 == listx4)              #returns False

但是即使在对它们进行排序后(考虑它们由不相等的元素组成),在检查它们的相等性时是否也不应为“ False”?在这里,我很困惑,因为在对listx3和listx4进行排序之后,打印函数返回“ True”。 (根据下面编写的代码)

print(listx3.sort() == listx4.sort())     #returns True

我的理解哪里有错?

2 个答案:

答案 0 :(得分:3)

listx1.sort()对列表进行适当排序,并返回None,就像所有没有特定返回值的函数和方法一样。所以您的测试:

listx1.sort() == listx2.sort()

实际上是None == None,是对的。

比较排序列表应该做的是:

listx1.sort()
listx2.sort()
list1 == list2

答案 1 :(得分:1)

.sort()方法对列表进行就地操作,不返回任何内容。内置函数sorted()返回列表的新排序副本。如果您使用:

sorted(listx3) == sorted(listx4)

您将获得期望的答案。

在这种情况下,在Python解释器中测试代码的各个部分将有助于您了解正在发生的事情。例如,如果您print(listx3.sort())会看到它显示None

相关问题