Python双列表遍历触发NameError: name 'number' is not defined求助
解决Python遍历对应列表时的NameError问题
你的第二个for循环语法完全错误,Python不支持for (color) in colors and (number) in crayons_count这种写法,这就是触发NameError的核心原因——number还未定义就被放到了循环逻辑里,而且and在这里会把两个非空列表转换成布尔值True,最终循环实际是在遍历True,完全达不到配对遍历两个列表的目的。
要实现颜色和对应蜡笔数量的配对输出,直接用Python内置的zip()函数即可,它能把多个可迭代对象的对应元素打包成元组,正好匹配你的需求。
修改后的代码如下:
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'] crayons_count = [10, 5, 7, 8, 9, 2, 3] for index, color in enumerate(colors): print(index, color) # 用zip配对两个列表的对应元素 for color, number in zip(colors, crayons_count): print(color, number)
运行这段代码后,输出会和你预期的完全一致:
0 red 1 orange 2 yellow 3 green 4 blue 5 indigo 6 violet red 10 orange 5 yellow 7 green 8 blue 9 indigo 2 violet 3
额外说明:如果后续遇到两个列表长度不一致的情况,zip()会以较短的列表为准停止遍历;要是需要保留所有元素,可以使用itertools.zip_longest(),不过你的场景里两个列表长度相同,用zip()就足够了。
内容的提问来源于stack exchange,提问作者lanteam ana
相关产品推荐
相关产品推荐

