对两个不相等列表使用sort排序之后为何会相等?(语言-python)


a = ['a','b','c']
b = ['w','y','z']

if a.sort() == b.sort():
    print("True")

输出结果为“True”

想问一下对两个不相等列表使用sort.()排序之后为何会相等?

  • list.sort()原址排序方法,没有返回值。如果非要说有,那就是None

  • 您的a.sort() = b.sort()操作,相当于None == None,您说会不会True?

  • 您用新生成列表排序函数sorted()试试,看看还True不True?

    img


    是False了!

代码


print('\n', sorted(a), sorted(b), sorted(a) == sorted(b), '\n') 


  • 代码运行效果截屏图片为证

    img

  • python 代码

#!/sur/bin/nve python
# coding: utf-8
 
a = ['a','b','c']
b = ['w','y','z']
if a.sort() == b.sort():
    print("True")

print(a.sort(), a.sort() is None) 
print(b.sort(), b.sort() is None) 


比较不是列表,而是sort的返回值

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7513461
  • 你也可以参考下这篇文章:python sort多条件排序
  • 您还可以看一下 龙豪杰老师的Python网络爬虫课程中的 sort排序小节, 巩固相关知识点
  • 除此之外, 这篇博客: python列表(list)中的 sort(将列表中的可迭代对象进行排序) 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    问题原因:

    问题出在你对a和b使用了sort()函数。sort()函数是将列表原地排序,即在原来的列表上进行排序,并且返回值为None。所以当你比较a.sort()和b.sort()的结果时,实际上是在比较None和None,因此条件判断结果为True。

    解决方案:

    要解决这个问题,可以改变你的比较方式。可以先使用sort()对a和b进行排序,然后再直接比较排序后的列表。具体代码如下:

    a = ['a', 'b', 'c']
    b = ['w', 'y', 'z']
    
    a.sort()
    b.sort()
    
    if a == b:
        print("True")
    

    这样就可以正确比较两个列表是否相等了。

    另外,如果你不想改变原列表,可以使用sorted()函数对列表进行排序,它会返回一个新的排序后的列表,示例代码如下:

    a = ['a', 'b', 'c']
    b = ['w', 'y', 'z']
    
    sorted_a = sorted(a)
    sorted_b = sorted(b)
    
    if sorted_a == sorted_b:
        print("True")
    

    这样也可以达到相同的效果。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^