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

嵌套元组遍历报错:TypeError: cannot unpack non-iterable int object

问题原因解析

你定义的tup并非三层嵌套元组,这是核心问题:
Python 中,元组的判定依赖逗号而非括号,多余的括号会被自动忽略。你写的(((1,2),(3,4),(5,6))),由于最外层括号内没有逗号,会被简化为((1,2),(3,4),(5,6))——这是一个包含3个二元组的两层元组,不是你预期的三层结构。

报错循环的具体分析

for sub_tup in tup:    
    for (a,b) in sub_tup:
        print(a)
  • 第一层循环for sub_tup in tup:sub_tup会依次取到(1,2)、(3,4)、(5,6)这三个二元组。
  • 第二层循环for (a,b) in sub_tup:此时sub_tup是(1,2),循环会逐个取出其中的元素(先取1,再取2)。当尝试用(a,b)去解包整数1时,就会触发TypeError——整数不是可迭代对象,无法拆分成两个变量。

为什么第二个循环能正常运行

for (a,b) in tup:
   print(a)

这里tup的每个元素都是长度为2的元组((1,2)、(3,4)、(5,6)),刚好可以被(a,b)正确解包,因此能正常打印每个元组的第一个元素。

实现预期的三层嵌套遍历

如果要实现你原本期望的嵌套遍历,需要给最外层元组添加逗号,明确它是包含一个三元组的元组:

tup = (((1,2),(3,4),(5,6)),)  # 最外层末尾加逗号
for sub_tup in tup:    
    for (a,b) in sub_tup:
        print(a)

运行这段代码会输出1、3、5,符合嵌套遍历的预期。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 00:37:32