统计混合类型列表中嵌套列表元素时遇TypeError问题求助
问题排查与解决
报错原因
你的代码直接对列表l里的每个元素i执行for j in i循环,但列表里包含整数(比如1、2、5),整数不是可迭代对象,没法用for循环遍历,所以触发TypeError: 'int' object is not iterable。另外,列表里还有字符串元素(比如'jordan'),就算没触发整数的错误,后续遍历字符串字符时执行j%2==0也会因为字符不能做取余运算报错。
修复后的代码
count = 0 l = [1,2,3,['albert','nick'],5,[7,5,4],'jordan'] for i in l: # 只处理嵌套的列表元素 if isinstance(i, list): for j in i: # 只对整数元素判断是否为偶数 if isinstance(j, int) and j % 2 == 0: count += 1 print(count) print(l)
代码说明
- 用
isinstance(i, list)判断当前元素是否为嵌套列表,只处理这类元素,跳过整数、字符串等非列表元素。 - 遍历嵌套列表内的元素时,先判断
j是否为整数,避免对字符串元素执行取余操作导致报错。 - 只有当元素是整数且为偶数时,才给计数器加1,最终统计出嵌套列表里的偶数个数。
内容的提问来源于stack exchange,提问作者ritikeshratan
相关产品推荐
相关产品推荐

