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

为何Python自定义排序函数返回None而非排序后的列表?

问题分析与修复方案

你的函数返回None的核心原因有两个:

  • list.sort()是原地排序方法:它会直接修改传入的列表本身,但方法的返回值固定为None,不会返回排序后的列表。
  • 自定义函数sort_list没有显式的return语句:Python中,任何没有return语句的函数都会默认返回None。

修复方案1:原地排序后返回原列表

既然sort()已经修改了原列表,只需要在函数末尾添加return语句返回修改后的列表即可:

def sort_list(input_list):
    input_list.sort()
    return input_list

print(sort_list([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]))

⚠️ 注意:这个方案会直接修改你传入的原始列表,如果你的业务场景不允许改动原列表,建议用下面的方案。

修复方案2:使用sorted()函数(推荐)

sorted()是一个内置函数,它不会修改原列表,而是返回一个全新的排序后的列表,函数可以直接返回这个结果:

def sort_list(input_list):
    return sorted(input_list)

print(sort_list([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]))

这个方案更安全,避免了意外修改原始数据的风险,适合绝大多数排序场景。

两种方案执行后,都会输出你期望的结果:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

内容的提问来源于stack exchange,提问作者Hoàng Phong Huỳnh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:23:18