比较两个列表 returns True 即使它需要 return False

Comparing two lists returns True even though it needs to return False

我正在尝试制作一个程序来比较两个列表,returns 如果它们都具有相同的变量则为“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))

输出为:

True

为什么会这样?

他们的长度是 4 所以第一个是真的 并且 sort() 方法没有 return 任何值。相反,它会更改原始列表。喜欢

if 4 == 4 and None == None:

这就是为什么它是真实的

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

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

您好,欢迎来到 Stack overflow。

sort 方法对列表本身进行排序,而不是 return 排序列表,实际上 sort() return None.

所以长度相等 None == None -> 因此你得到 True.

你应该写:

   def are_lists_equall(list1, list2):


    if len(list1) == len(list2):
       list1.sort()
       list2.sort()
       if list1 == list2:
          return True
       else:
          return False
    else:
       return False
   
   list1 = [1, 2, 3, 4]
   list2 = [2, 1, 3, 4] 
   print(are_lists_equall(list1, list2))

我建议您也阅读这篇很棒的文章: https://www.tutorialspoint.com/how-to-compare-two-lists-in-python

您应该使用两个列表的值创建临时变量,以便对它们进行排序和比较:

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

list1 = [0.6, 1, 2, 3]
list2 = [9, 0, 5, 10.5]
print(are_lists_equall(list1, list2))