Python - 关于变量声明

时间:2017-10-10 11:03:54

标签: python python-2.7

想不出我问题的合适标题。

所以无论如何,我一直在寻找一种算法,以确定列表是否平衡,我遇到过这个问题: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

我想知道它为什么抛出 TypeError:'int'对象不可迭代如果我这样做到第2行:

left_total = 0
right_total = 0
sum(numbers)

希望有人能帮助我理解。 谢谢!

1 个答案:

答案 0 :(得分:3)

您传入的“数字”变量是一个int。

你不能做sum(1)例如但你可以做sum([1,2])或sum((1,2))

传递给balanced的变量必须是可迭代类型。 AKA是一个列表,一个元组,一组等等。

与您的错误无关:

你不应该这样做

left_total = 0
right_total = 0
sum(numbers)

而是

left_total = 0
right_total = sum(numbers)

如果你想模仿这个功能正在做什么。

有关left_total,right_total问题的详情,请参阅:Is there a standardized method to swap two variables in Python?

https://docs.python.org/3/reference/expressions.html#evaluation-order