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

Python中元组转列表后两种排序写法为何结果不同?

问题解析

两段代码的差异核心在于列表sort()方法的返回值特性:

第一段代码能正常运行的原因

x = (5,4,3)
y = list(x)
y.sort()
  1. list(x)把元组x转换成新列表[5,4,3],并将这个列表对象赋值给变量y
  2. 调用y.sort()时,该方法会原地修改y指向的列表(将其变为[3,4,5]),虽然sort()方法本身返回None,但我们不需要这个返回值——因为y对应的列表已经被直接修改,最终y就是排序后的列表。

第二段代码达不到预期的原因

x = (5,4,3)
y = list(x).sort()
  1. list(x)同样生成临时列表[5,4,3]
  2. 调用这个临时列表的sort()方法时,虽然临时列表会被原地排序为[3,4,5],但sort()方法的返回值始终是None
  3. 最终y被赋值为None,而非你期望的排序后的列表。

一行代码实现预期的替代方案

如果想在一行内完成转换+排序,可以使用sorted()函数——它会返回一个新的排序后的列表,而非原地修改原对象:

x = (5,4,3)
y = sorted(x)

此时y的值就是[3,4,5],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:12:01