Python报TypeError: cannot unpack non-iterable int object错误解决
问题根因
报错由变量赋值逻辑错误直接导致:
- 第一个循环每轮都会重新给
I4赋值为当前轮转换得到的一维坐标子列表,循环结束后I4仅保留最后一轮的结果[(0, -1), (1, -1)],是长度为2的一维列表,并非注释中记录的包含4个子列表的嵌套结构,完整的嵌套转换结果实际存储在temp变量中。 - 第二个循环取
I4[h]时,拿到的是单个坐标元组(比如h=0时拿到(0,-1)),此时对单个元组执行for i,j in I4[h],迭代会逐个取出元组内的整数(第一个值为int类型的0),尝试把单个整数解包为i,j两个变量,就会抛出TypeError: cannot unpack non-iterable int object错误。
修复方案
在第一个循环结束后,将存储了完整嵌套列表的temp赋值给I4,保证第二个循环遍历I4[h]时能取到对应的子列表即可。
修复后完整代码
I3 = [[(0, 0), (0, 1)], [(0, 0), (1, 0)], [(0, 1), (1, 1)], [(1, 0), (1, 1)]] temp = [] for t in range(len(I3)): I4 = [(j, -i) for i, j in I3[t]] temp.append(I4) I4 = temp print("I4 =", I4) temp2 = [] for h in range(len(I3)): I5 = [(i + 0.5, j - 0.5) for i, j in I4[h]] temp2.append(I5) print("I5 =", temp2)
运行结果
执行代码后将得到预期输出:
I4 = [[(0, 0), (1, 0)], [(0, 0), (0, -1)], [(1, 0), (1, -1)], [(0, -1), (1, -1)]] I5 = [[(0.5, -0.5), (1.5, -0.5)], [(0.5, -0.5), (0.5, -1.5)], [(1.5, -0.5), (1.5, -1.5)], [(0.5, -1.5), (1.5, -1.5)]]
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

