我正在尝试遍历数组,计算一些值并将它们存储在另一个数组(output
)中。但是,我尝试的(见下文)始终打印inarray
中的最后一个值和最后计算的sum
(不是预期的最大值),output
数组也只包含最后一个值。我认为output.append(sum)
每次都应该在整个循环中附加sum
值,但事实并非如此。如果我直接打印和值,它会显示在控制台上。我做错了什么?
def discountCombinations(inarray):
for i in range(len(inarray)):
max = 0
maxi = 0
output = list()
...
#do stuff
...
sum = new_y.sum()
output.append(sum)
print sum
if sum > max:
max = copy.copy(sum)
maxi = copy.copy(i)
print (max,": ", inarray[maxi])
print output
答案 0 :(得分:5)
output = list()
在for循环中定义,因此前一个append的结果在循环的下一次迭代中被销毁。您的max
和maxi
值在循环中定义相同,后面也是如此。
答案 1 :(得分:3)
您正在为您处理的每个输入项重置max,maxi和output。在处理任何输入项之前,您应该只执行一次,例如:
max = 0
maxi = 0
output = list()
for i in range(len(inarray)):
...
#do stuff
...
答案 2 :(得分:1)
在每次迭代中,您将变量“output”重新初始化为此行中的空列表:“output = list()”。你只需要在“for”循环之前移动这一行。