You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何执行print(list.sort())会输出None而非排序后的列表?

为何执行print(list.sort())会输出None而非排序后的列表?

嗨,这个问题其实是Python新手很容易踩的小坑,我给你唠明白~

核心原因在于列表的sort()方法是「原地修改」类型的方法:

  • 当你调用list.sort()时,它会直接对原列表进行排序修改,不会创建并返回一个新的排序后的列表。
  • 这类原地操作的方法,Python设计它们的返回值为None,目的是明确告诉你:“我已经修改了原来的对象,没有新东西给你返回哦”。

咱们结合你的代码例子来看:
第一个代码片段:

list = [5, 1, 2]
print(list.sort())

这里你调用list.sort()后,原列表确实已经被改成[1, 2, 5]了,但print()打印的是list.sort()这个方法调用的返回值——也就是None,所以最终输出就是None。

而第二个代码片段:

list.sort()
print(list)

这里先执行list.sort()完成对原列表的排序,然后print()直接输出已经被修改后的原列表,自然就得到了排序后的[1, 2, 5]。

顺带提个实用小技巧:如果你不想修改原列表,还想直接得到排序后的新列表,可以用Python内置的sorted()函数,它会返回一个排序好的新列表,原列表保持不变:

list = [5, 1, 2]
print(sorted(list))  # 输出 [1, 2, 5]
print(list)          # 原列表依旧是 [5, 1, 2]

备注:内容来源于stack exchange,提问作者JohnE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:39:51