想不出我问题的合适标题。
所以无论如何,我一直在寻找一种算法,以确定列表是否平衡,我遇到过这个问题: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)
希望有人能帮助我理解。 谢谢!
答案 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