Python列表打印异常:代码返回None,缺失哪一步?
问题分析与解决
嘿,这个问题很常见——你踩了Python列表排序方法的一个小坑!
问题根源
你在sort_list函数里用了unsorted_list.sort(),但**list.sort()是一个原地排序方法**:它会直接修改原列表的顺序,但本身不会返回任何有效内容(准确说返回的是None)。所以你把这个返回值赋值给sorted_list,最后返回的自然就是None,这就导致main函数里的my_list变成了None,打印出来就是你看到的结果。
两种修复方案
你可以根据需求选其中一种:
方案1:使用sorted()函数(推荐,不修改原列表)
sorted()函数会创建并返回一个新的排序列表,原列表保持不变,非常适合你的场景:
def sort_list(unsorted_list): sorted_list = sorted(unsorted_list) return sorted_list
方案2:修正sort()的使用方式(原地排序后返回原列表)
如果你不介意修改传入的原列表,也可以直接排序后返回原列表(因为sort()已经修改了它):
def sort_list(unsorted_list): unsorted_list.sort() return unsorted_list
要是你想保留原列表的顺序,还可以先复制一份再排序:
def sort_list(unsorted_list): sorted_list = unsorted_list.copy() # 创建原列表的副本 sorted_list.sort() return sorted_list
验证修复效果
修改后再运行代码,当你输入完数值并输入done后,就会正常打印出排序后的列表啦!
内容的提问来源于stack exchange,提问作者Brandon Wilbur
相关产品推荐
相关产品推荐

