为什么运行Python求偶数和的代码会出现TypeError: 'int' object is not iterable错误
报错原因
reduce() 函数的作用是将传入的函数迭代作用在序列上,最终返回单个累计结果值,你代码里的reduce(toplama,list(ciftler))执行完已经得到了偶数和的整数结果,外层套list()尝试将整数转为列表,而整数不属于可迭代对象,因此触发TypeError: 'int' object is not iterable报错。
修复方案
直接去掉reduce外层的list()调用即可,修改后的对应代码行如下:
sonuc = reduce(toplama, ciftler)
完整可运行代码:
from functools import reduce liste = [1,2,3,4,5,6,7,8,9,10] def cift_mi(a): return a % 2 == 0 ciftler = list(filter(cift_mi, liste)) def toplama(a,b): return a + b sonuc = reduce(toplama, ciftler) print(sonuc)
如果你不需要刻意练习reduce的用法,还可以直接用Python内置的sum()函数计算序列和,代码更简洁:
liste = [1,2,3,4,5,6,7,8,9,10] sonuc = sum(x for x in liste if x % 2 == 0) print(sonuc)
内容的提问来源于stack exchange,提问作者V0LzEn0r
相关产品推荐
相关产品推荐

