import pyfiglet
pyfiglet.print_figlet("Niko CyMax",'puffy')
num_list=[ (1,2) , (3,1000) , (5,6) , (9,10) , (8,500) , (70,400) ]
num_list_manual_sort=num_list.sort()
num_list_pro_sort=num_list.sort(key = lambda x: x[1])
for i in num_list_manual_sort:
print(i)
for i in num_list_pro_sort:
print(i)
错误是:
TypeError: 'NoneType' object is not iterable
答案 0 :(得分:0)
使用 sort()
对列表进行排序改变了列表就地,也就是说,直接改变了列表 num_list
,而不是返回排序后的列表和原始列表完好无损。您想使用内置的 sorted
函数,它完全符合您的要求:
import pyfiglet
pyfiglet.print_figlet("Niko CyMax",'puffy')
num_list=[(1, 2), (3, 1000), (5, 6), (9, 10), (8, 500), (70, 400)]
num_list_manual_sort = sorted(num_list)
num_list_pro_sort = sorted(num_list, key=lambda x: x[1])
for i in num_list_manual_sort:
print(i)
for i in num_list_pro_sort:
print(i)
答案 1 :(得分:-2)
当您使用 sort
方法对列表进行排序时,您正在更改列表本身,并返回 None
。
num_list_manual_sort=num_list.sort()
num_list_pro_sort=num_list.sort(key = lambda x: x[1])
num_list_manual_sort
和 num_list_pro_sort
都将持有 None
。
如果您想取回列表,可以将其替换为:
num_list.sort()
num_list_manual_sort = num_list[:]
num_list.sort(key = lambda x: x[1])
num_list_pro_sort = num_list[:]
有更多选择可以做到这一点,取决于您的需要。