如何在Python函数中排序列表元素?为何sort()输出None?
解决函数中列表排序输出None的问题
你遇到的问题根源是**list.sort()方法的特性**:它是原地修改列表的排序方法,不会返回排序后的列表,而是直接返回None。所以你直接打印even.sort()和odd.sort()时,输出的就是这个返回值。
有两种可行的解决方案:
方案一:先原地排序,再打印列表本身
先调用sort()完成原地排序,再直接打印列表变量:
def odd_even(*number): even = [] odd = [] for i in number: if i % 2 == 0: even.append(i) else: odd.append(i) even.sort() odd.sort() print(even) print(odd)
方案二:使用sorted()函数返回新排序列表
sorted()函数不会修改原列表,而是返回一个全新的排序列表,直接打印这个返回结果即可:
def odd_even(*number): even = [] odd = [] for i in number: if i % 2 == 0: even.append(i) else: odd.append(i) print(sorted(even)) print(sorted(odd))
调用你的测试代码:
odd_even(1,5,7,8,4,3,26,59,48,7,5,45)
两种方案都会输出排序后的结果:
[4, 8, 26, 48]
[1, 3, 5, 5, 7, 7, 45, 59]
内容的提问来源于stack exchange,提问作者Necip Arda
相关产品推荐
相关产品推荐

