为何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
相关产品推荐
相关产品推荐

