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

Python中使用lambda作为key调用sort方法排序为何返回None

问题原因

Python列表对象的sort()方法是原地操作:它会直接修改当前列表内部的元素排列顺序,不会生成新列表,方法本身的返回值固定为None。
你写的lambda排序规则本身没有问题,出现None输出的核心原因是你直接把sort()的返回值传给了print()函数,打印的是方法的返回值,而非排序后的列表内容。

修正方案

根据你是否需要保留原列表的原始顺序,选任意一种写法即可:

  • 方案1:接受原地修改逻辑,先执行排序操作,再打印原列表
some_authors = ["Isaac Asimov", "Ray Bradbury", "Sin Johny", "Big Dinggus", "Big Chunggos","H.G Wels", "H.P Lovecraft"]
some_authors.sort(key=lambda name: name.split(" ")[-1].lower())
print(some_authors)

执行后输出正确排序结果:

['Isaac Asimov', 'Ray Bradbury', 'Big Chunggos', 'Big Dinggus', 'Sin Johny', 'H.P Lovecraft', 'H.G Wels']
  • 方案2:如果不想改动原列表的原始顺序,使用内置sorted()函数,该函数会返回排序完成的新列表,可以直接传入print输出
some_authors = ["Isaac Asimov", "Ray Bradbury", "Sin Johny", "Big Dinggus", "Big Chunggos","H.G Wels", "H.P Lovecraft"]
print(sorted(some_authors, key=lambda name: name.split(" ")[-1].lower()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:54:25