使用enumerate遍历列表时触发TypeError:'NoneType'对象不可迭代
问题修正方案
错误根源在于**list.sort()是原地排序方法**,它会直接修改原列表的顺序,但返回值为None。你将这个None重新赋值给了waiting_list,导致后续遍历waiting_list时,实际是在迭代一个NoneType对象,触发了TypeError。
修正方法一:直接调用sort()(不重新赋值)
这种方法会直接修改原列表的顺序,适合不需要保留原列表初始状态的场景:
waiting_list = ["sen", "ben", "john"] waiting_list.sort() # 原地排序,无需接收返回值 for index, item in enumerate(waiting_list): row = f"{index+1}.{item.capitalize()}" print(row)
修正方法二:使用sorted()函数返回新列表
如果需要保留原列表的初始顺序,可以用sorted()函数,它会返回一个全新的排序后的列表,原列表不受影响:
waiting_list = ["sen", "ben", "john"] sorted_list = sorted(waiting_list) # 获取排序后的新列表 for index, item in enumerate(sorted_list): row = f"{index+1}.{item.capitalize()}" print(row)
两种方法运行后都会输出正确的排序结果:
1.Ben 2.John 3.Sen
内容的提问来源于stack exchange,提问作者Seenivasan K.
相关产品推荐
相关产品推荐

