Python列表扩展遇TypeError:int对象不可迭代问题排查与解决
问题拆解与解决方案
嘿,这问题我太熟了!咱们一步步来搞清楚:
错误原因
你用的extend()方法有个关键要求——它只能接收可迭代对象(比如列表、元组、字符串这类能逐个取出元素的东西)。但你的l2是[5,7],当你取l2[i]的时候,拿到的是单个整数(比如第一次循环取到5),整数不是可迭代对象,Python自然就报错说“int object is not iterable”啦。
而当l2是[[5],[7]]时,l2[i]是一个单元素列表(比如[5]),这是可迭代的,extend()就可以把列表里的5取出来加到l1[i]里,所以能正常运行。
两种适配l2 = [5,7]的修改方法
方法1:把单个整数包装成可迭代的单元素列表传给extend()
既然extend()要可迭代对象,那咱们把l2[i]装到列表里就行:
l1 = [[1,2],[3,4]] l2 = [5,7] for i in range(len(l2)): l1[i].extend([l2[i]]) # 把整数包进列表里 print(l1) # 输出:[[1, 2, 5], [3, 4, 7]]
方法2:用append()代替extend()(更推荐)
其实你这里的需求是给l1的每个子列表添加单个元素,用append()更贴合场景——append()专门用来给列表加单个元素,不需要可迭代对象:
l1 = [[1,2],[3,4]] l2 = [5,7] for i in range(len(l2)): l1[i].append(l2[i]) # 直接加单个整数 print(l1) # 输出:[[1, 2, 5], [3, 4, 7]]
内容的提问来源于stack exchange,提问作者Katekarin
相关产品推荐
相关产品推荐

