比较两个列表会返回 True,即使需要返回 False

use*_*791 0 python syntax-error

我正在尝试编写一个程序来比较两个列表,如果它们都具有相同的变量,则返回“True”,否则返回“False”。

代码是:

def are_lists_equall(list1, list2):
    if len(list1) == len(list2) and list1.sort() == list2.sort():
        return True
    else:
        return False

list1 = [0.6, 1, 2, 3]
list2 = [9, 0, 5, 10.5]
print(are_lists_equall(list1, list2))
Run Code Online (Sandbox Code Playgroud)

输出是:

True
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

abe*_*rkb 8

它们的长度为 4,因此第一个为 true,并且 sort() 方法不返回任何值。相反,它改变了原始列表。就像是

if 4 == 4 and None == None:
Run Code Online (Sandbox Code Playgroud)

这就是为什么它是真实的

如果您想确保比较这些列表,请使用sorted()方法:

sorted(list1) == sorted(list2)会给你False