Python:TypeError:';int';对象是不可编辑的(想想Python 10.3)

Python:TypeError:';int';对象是不可编辑的(想想Python 10.3),python,python-2.7,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,

我正在尝试解决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

谢谢大家!

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

res += a
取而代之的是

res.append(a)
res+=a
有什么问题?Python希望
a
是可移植的,并且在幕后尝试执行以下等效操作:

for item in a:
    res.append(a)
但是由于
a
是不可编辑的,因此您会得到一个
TypeError


注意:我最初认为您的错误在
中,因为您的变量名称不正确。听起来像是一个整数。因为它是一个数字列表,所以至少将其设为复数(
nums
),这样代码的读者就不会感到困惑。(您通常要帮助的读者是未来的您。)

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

res += a
取而代之的是

res.append(a)
res+=a
有什么问题?Python希望
a
是可移植的,并且在幕后尝试执行以下等效操作:

for item in a:
    res.append(a)
但是由于
a
是不可编辑的,因此您会得到一个
TypeError


注意:我最初认为您的错误在
中,因为您的变量名称不正确。听起来像是一个整数。因为它是一个数字列表,所以至少将其设为复数(
nums
),这样代码的读者就不会感到困惑。(你通常会帮助的读者是未来的你。)

你想做的是用
int
扩展你的列表,这是不合适的,因此会出错。您需要使用
append
方法将元素添加到列表中:

res.append(a)
或者,用正确的方法扩展

res += [a]

您试图做的是用一个不可编辑的
int
扩展您的列表,因此会出现错误。您需要使用
append
方法将元素添加到列表中:

res.append(a)
或者,用正确的方法扩展

res += [a]

检查出这个帖子,它有多个答案你的问题检查出这个帖子,它有多个答案你的问题嗨,谢谢你的建议和你的编辑我的帖子!我以前没见过!现在可以了!还感谢您对变量名称的建议!您好,谢谢您的建议和您对我的帖子的编辑!我以前没见过!现在可以了!还感谢您对变量名称的建议!我在回答中没有提到
res+=[a]
,因为当另一个简单的替代方案存在时,不必要地创建临时对象是一个坏习惯。我在回答中没有提到
res+=[a]
,因为当另一个简单的替代方案存在时,不必要地创建临时对象是一个坏习惯。