Python:TypeError:';int';对象是不可编辑的(想想Python 10.3)
我正在尝试解决Think Python练习10.3 编写一个函数,获取数字列表并返回累积和;也就是说,一个新列表,其中第i个元素是原始列表中第一个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,
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]
,因为当另一个简单的替代方案存在时,不必要地创建临时对象是一个坏习惯。