Python中map函数报错‘Int is not iterable’的原因解析
为什么
map(list, [1,2])报错而map(list, ['a','b'])正常? 要搞懂这个问题,得先明确两个关键逻辑:
map(func, iterable)的作用是把iterable中的每个元素依次传入func执行,最终收集所有返回值生成迭代器。list()函数必须接收可迭代对象(比如字符串、列表、元组等)作为参数,它的功能是将可迭代对象转化为列表;如果传入非可迭代对象(比如整数),就会抛出TypeError: 'int' object is not iterable错误。
具体分析两个例子:
- 执行
map(list, [1,2])时,map会依次把整数1和2传入list()函数。但整数属于非可迭代对象,list(1)直接触发报错,导致整个代码运行失败。 - 执行
map(list, ['a','b'])时,map依次把字符串'a'和'b'传入list()函数。字符串是可迭代对象(可以看作单个字符组成的序列),list('a')会返回['a'],list('b')返回['b'],最终list(map(...))会把这些结果收集成[['a'], ['b']],因此能正常运行。
内容的提问来源于stack exchange,提问作者Pratham Singh
相关产品推荐
相关产品推荐

