如何排查Python代码中的TypeError: 'int' object is not iterable错误?
错误分析与原因
首先看报错核心:TypeError: 'int' object is not iterable,问题出在这一行代码:
added_line += zip((x1, x2), y)
错误原因
zip()函数要求所有传入的参数都是可迭代对象(比如列表、元组、字符串等),但你传入的y是整数类型,整数不属于可迭代范畴,当zip尝试遍历y时,就会抛出这个迭代错误。
针对预期功能的修正方向
你的需求是将y与每个(x1, x2)元组结合,分两种常见场景给出修正方案:
场景1:生成(x1,y)、(x2,y)形式的二元组列表
需要把y转换为可迭代对象,比如构造重复元素的列表,或者用itertools.repeat实现:
# 方法1:直接构造重复列表 def add_line(block, y): added_line = [] for (x1, x2) in block: added_line += zip((x1, x2), [y, y]) return added_line # 方法2:用itertools.repeat更高效(适合大量重复场景) import itertools def add_line(block, y): added_line = [] for (x1, x2) in block: added_line += zip((x1, x2), itertools.repeat(y, 2)) return added_line
场景2:生成(x1,x2,y)形式的三元组
直接通过元组拼接实现,无需使用zip:
def add_line(block, y): added_line = [] for (x1, x2) in block: added_line.append((x1, x2, y)) return added_line
内容的提问来源于stack exchange,提问作者mpacc
相关产品推荐
相关产品推荐

