Python:TypeError:'int'对象不可迭代(Think Python 10.3)

时间:2016-11-28 16:09:46

标签: python python-2.7

我试图解决 Think Python 练习10.3

  

编写一个带有数字列表并返回累计和的函数;也就是说,一个新的列表,其中第i个元素是原始列表中第一个i + 1元素的总和。例如,[1, 2, 3]的累计总和为[1, 3, 6]

我使用以下代码获得TypeError

def culm_sum(num):
    res= []
    a = 0
    for i in num:
        a += i
        res += a
    return res

当我致电culm_sum([1, 2, 3])时,我得到了

TypeError: 'int' object is not iterable

谢谢!

2 个答案:

答案 0 :(得分:3)

您用于附加到列表的代码不正确:

res += a

取而代之的是

res.append(a)

res += a有什么问题? Python期望a可以迭代,并且幕后尝试执行相当于:

for item in a:
    res.append(a)

但由于a不可迭代,因此您获得了TypeError

注意我最初认为您的错误位于for i in num:,因为您的变量命名不佳。听起来它只是一个整数。因为它是一个数字列表,至少使它复数(nums),以便您的代码的读者不会混淆。 (你通常会帮助的读者是未来你。)

答案 1 :(得分:0)

您尝试执行此操作的是extend您的列表int,该列表不可迭代,因此错误。您需要使用append方法将元素添加到列表中:

res.append(a)

或者,这样做,extend的正确方法:

res += [a]