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

过滤列表后迭代报错TypeError:'int'对象不可迭代的问题排查

解决TypeError: 'int' object is not iterable的小坑

哈哈,这个问题看起来有点反直觉,但其实是个很容易踩的语法小坑!我来给你把逻辑理清楚:

你说的没错,arr确实是列表类型,而且里面只有一个整数元素822,但问题根本不在arr的类型上,而是出在你写的for循环写法上!

错误原因拆解

当你写:

for index, item in arr:
    # do something

Python会默认把arr里的每一个元素当成一个可迭代对象,尝试把它拆分成两个值(也就是你写的index和item)。但你的arr里的元素是整数822,整数是不可迭代的,没法被拆成两个变量,这就直接触发了TypeError: 'int' object is not iterable。

举个对比的例子:如果你的arr是[(0, 822)],那这样写循环是没问题的,因为每个元素是元组(可迭代),可以被拆成两个值。但你的arr是[822],循环时每次拿到的是单个整数,自然没法解包成两个变量。

正确的写法

如果你的需求是同时获取元素的索引和元素值,你需要用Python内置的enumerate()函数,它会把列表的每个元素转换成(索引, 元素值)的元组,这样就能正常解包了:

for index, item in enumerate(arr):
    # do something

再补个小验证:你单独执行index, item = 822试试,肯定会报同样的错——这就是你的循环在幕后做的事情,现在是不是一下子就明白啦?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:46:30