我该如何解决 TypeError: 'NoneType' object is not iterable in pyhton

时间:2021-04-10 12:09:05

标签: python

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

2 个答案:

答案 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_sortnum_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[:]

有更多选择可以做到这一点,取决于您的需要。