对列表 sortedlist,sortedlist.sort() 可以,直接 sortedlistcopy = sortedlist.sort() 不可以。这有意思么?

sortedlist= [2,4,1,6]
sortedlist.sort()
sortedlistcopy = sortedlist
print(sortedlistcopy)

[1, 2, 4, 6]


sortedlist= [2,4,1,6]
sortedlistcopy = sortedlist.sort()
sortedlistcopy
type(sortedlistcopy)

NoneType

-------某教材上说,“You can sort a list in place (without creating a new object) by calling its sort function”。
直是不敲不知道。上面两小段代码表明,对列表 sortedlist,sortedlist.sort() 可以,直接 sortedlistcopy = sortedlist.sort() 不可以。
请问,这有意思么?

参考网友的问题及回复,已弄明白。分享如下:
----因为sort()表示整理该列表,返回None,sorted表示返回整理后的列表
B.sort()相当于B=sorted(B)
如果你一定要用sort,就先B.sort()再return B
-----a.sort()是无返回值的
print(a)
sort()函数是列表的方法,不是python内置函数,list.sort()
sorted()是内置函数,有返回值

【以下回答由 GPT 生成】

这个问题的含义是,sort() 方法是对原列表进行排序并且没有返回任何值,即返回值为None。因此将sortedlist.sort()赋值给sortedlistcopy实际上是将None赋值给了sortedlistcopy,并不是将排序后的列表赋值给sortedlistcopy

解决这个问题的方法是,在排序后,通过使用切片操作将排序后的列表赋值给sortedlistcopy

下面是修正后的代码:

sortedlist = [2, 4, 1, 6]
sortedlist.sort()
sortedlistcopy = sortedlist[:]
print(sortedlistcopy)

输出结果为:[1, 2, 4, 6]


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