【发布时间】:2017-10-10 11:03:53
【问题描述】:
想不出适合我的问题的标题。
所以无论如何,我一直在寻找一种算法来确定列表是否平衡,我遇到了这个问题:Algorithm for finding if an array is balanced
其中一个答案是我需要完成的任务。但是,我想了解如果我从下面的代码中更改第 2 行会发生什么。
def balanced(numbers):
left_total, right_total = 0, sum(numbers)
for pivot, value in enumerate(numbers):
if left_total == right_total:
return pivot
left_total += value
right_total -= value
return None
如果我对第 2 行执行此操作,我想知道为什么它会抛出 TypeError: 'int' object is not iterable:
left_total = 0
right_total = 0
sum(numbers)
希望有人能帮助我理解。 谢谢!
【问题讨论】:
-
right_total被分配了sum(numbers)的值。不是 0 -
这三行不会抛出该错误。他们也不会做与他们要替换的人相同的事情。
-
and numbers 是一个列表,这就是错误的意思
-
left_total, right_total = 0, sum(numbers)将分配left_total-> 0 和right_total-> sum(numbers) -
我实际上并不是在问 TypeError,而是在问变量的声明方式。我的假设是:
left_total, right_total = 0, sum(numbers)相当于:left_total = 0 right_total = 0 sum(numbers)
标签: python python-2.7