在第一部分中,我有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
我的理解哪里有错?
答案 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
。