Python中元组转列表后两种排序写法为何结果不同?
问题解析
两段代码的差异核心在于列表sort()方法的返回值特性:
第一段代码能正常运行的原因
x = (5,4,3) y = list(x) y.sort()
list(x)把元组x转换成新列表[5,4,3],并将这个列表对象赋值给变量y- 调用
y.sort()时,该方法会原地修改y指向的列表(将其变为[3,4,5]),虽然sort()方法本身返回None,但我们不需要这个返回值——因为y对应的列表已经被直接修改,最终y就是排序后的列表。
第二段代码达不到预期的原因
x = (5,4,3) y = list(x).sort()
list(x)同样生成临时列表[5,4,3]- 调用这个临时列表的
sort()方法时,虽然临时列表会被原地排序为[3,4,5],但sort()方法的返回值始终是None - 最终
y被赋值为None,而非你期望的排序后的列表。
一行代码实现预期的替代方案
如果想在一行内完成转换+排序,可以使用sorted()函数——它会返回一个新的排序后的列表,而非原地修改原对象:
x = (5,4,3) y = sorted(x)
此时y的值就是[3,4,5],符合预期。
内容的提问来源于stack exchange,提问作者DCR
相关产品推荐
相关产品推荐

