为什么Python的list.sort()方法调用后返回None?
为什么Python列表sort()后赋值会得到None?
问题出在mylist = mylist.sort()这行代码上:
- Python的列表
sort()方法是原地修改操作,它会直接对原列表进行排序,不会生成并返回新的排序列表,该方法的返回值固定为None。 - 当你把这个
None赋值给mylist变量后,原本的列表虽然已经被排序,但变量mylist现在指向的是None,所以打印出来的结果就是None。
两种正确的写法:
写法1:直接调用sort(),不赋值
mylist = [] mylist.append(5) mylist.append(27) mylist.append(3) mylist.append(12) print(mylist) mylist.sort() # 原地排序,无需赋值 print(mylist)
输出结果:
[5, 27, 3, 12] [3, 5, 12, 27]
写法2:使用sorted()函数(保留原列表)
如果你不想修改原列表,想得到一个新的排序列表,可以用sorted()函数,它会返回排序后的新列表,原列表保持不变:
mylist = [] mylist.append(5) mylist.append(27) mylist.append(3) mylist.append(12) print(mylist) sorted_list = sorted(mylist) # 获取新的排序列表 print(sorted_list) print(mylist) # 原列表顺序不变
输出结果:
[5, 27, 3, 12] [3, 5, 12, 27] [5, 27, 3, 12]
内容的提问来源于stack exchange,提问作者user21481661
相关产品推荐
相关产品推荐

