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

Python:链式调用不符合预期——创建并排序列表遇问题

为什么链式调用.sort()会得到None?

嘿,这个问题其实挺典型的,很多刚接触Python的朋友都会踩这个坑,我来给你讲明白~

核心原因:sort()是原地排序方法,返回None

Python里列表的sort()方法设计思路是直接修改原列表(也就是“原地排序”),它不会创建并返回一个新的排序后的列表。所以当你写:

mylist = [4, 1, 2, 6, 0, 9].sort()

这段代码会先创建临时列表[4,1,2,6,0,9],然后调用它的sort()方法把这个临时列表排序,但sort()方法本身返回的是None,最后这个None就被赋值给了mylist,这就是你得到None的原因。

而分开写的情况:

mylist = [4, 1, 2, 6, 0, 9]
mylist.sort()

这里是先把列表赋值给mylist,然后调用mylist.sort()修改这个变量指向的列表本身,所以之后mylist自然就是排序后的结果了。

想要链式调用?用sorted()就对了

如果想一步完成“创建列表+排序+赋值”的操作,你应该用Python内置的sorted()函数。它会接受一个可迭代对象,返回一个新的排序后的列表,原对象不会被修改,完美适配链式场景:

mylist = sorted([4, 1, 2, 6, 0, 9])
print(mylist)  # 输出:[0, 1, 2, 4, 6, 9]

再总结下两者的区别

  • list.sort():列表专属方法,原地修改原列表,返回None
  • sorted():内置通用函数,接受所有可迭代对象(列表、元组、字符串等),返回新的排序后的列表,原对象保持不变

内容的提问来源于stack exchange,提问作者Cryn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:43:22