Python遍历列表调用max()报int不可迭代错误原因解析
问题核心原因
首先要纠正一个认知误区:你的代码里从来没有“遍历int类型”的操作,两个代码段的操作逻辑完全不是一回事:
- 第一段for循环的迭代对象是
data列表,列表本身是可迭代类型,循环的逻辑是每次从列表里取出一个存储好的int类型元素,赋值给变量i再打印。整个迭代过程的操作目标是列表,不是里面的整数。 - 第二段报错的根源是
max()函数的参数规则:max()支持两种传参方式:要么直接传入多个待比较的单独数值,比如max(1,3,5);要么传入一个可迭代的容器对象(比如列表、元组),函数会自己遍历这个容器找出最大值。你在循环里传给max()的i是从列表里取出来的单个整数,函数拿到参数后默认要遍历这个参数找最大值,但整数本身是不可迭代的,自然会抛出类型错误。
复现问题的完整代码
n,m,k=map(int, input().split()) data=list(map(int, input().split())) for i in data: print(i) # 正常输出结果:2 3 4 5 6 for i in data: print(max(i))
运行抛出的报错信息
TypeError: 'int' object is not iterable
举个简单的正确用法参考:如果要找整个data列表的最大值,直接写print(max(data))即可,这时候传给max()的是可迭代的列表对象,不会触发报错。
内容的提问来源于stack exchange,提问作者dy k
相关产品推荐
相关产品推荐

