为了循环痛苦

lte*_*e__ 0 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
Run Code Online (Sandbox Code Playgroud)

Mos*_*oye 5

output = list()在for循环中定义,因此前一个append的结果在循环的下一次迭代中被销毁.你的maxmaxi值在循环中同样定义,接下来是相同的.