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

Python列表sort方法返回值问题及元组排序正确写法咨询

问题:列表sort方法配合lambda排序后print输出None的原因及其他实现方式

为什么你的代码输出None

list.sort()是原地排序方法——它会直接修改原列表的顺序,但方法本身的返回值是None。你直接执行print(a.sort(key=lambda num: num[1])),本质是打印这个方法的返回值,所以结果是None。

正确的逻辑是先调用sort()完成原列表的排序修改,再打印修改后的列表:

a = [(0, 2), (4, 3), (9, 9), (10, -1)]
a.sort(key=lambda x: x[1])
print(a)  # 输出: [(10, -1), (0, 2), (4, 3), (9, 9)]

其他正确的实现方式

1. 使用sorted()函数(不修改原列表)

sorted()函数不会改变原列表,而是返回一个新的排序后的列表,适合需要保留原列表的场景:

a = [(0, 2), (4, 3), (9, 9), (10, -1)]
print(sorted(a, key=lambda x: x[1]))  # 直接输出排序后的新列表

2. 使用operator.itemgetter(更高效)

对于按元素下标排序的场景,使用operator模块的itemgetter比lambda表达式更高效,代码也更简洁:

from operator import itemgetter

a = [(0, 2), (4, 3), (9, 9), (10, -1)]
a.sort(key=itemgetter(1))
print(a)

# 或者结合sorted使用
print(sorted(a, key=itemgetter(1)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:55:20