You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:15:42