为了循环痛苦

时间:2016-05-22 15:59:20

标签: python arrays

我正在尝试遍历数组,计算一些值并将它们存储在另一个数组(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

3 个答案:

答案 0 :(得分:5)

output = list()在for循环中定义,因此前一个append的结果在循环的下一次迭代中被销毁。您的maxmaxi值在循环中定义相同,后面也是如此。

答案 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”循环之前移动这一行。