Python 如何使用if语句是嵌套循环

Python 如何使用if语句是嵌套循环,python,for-loop,if-statement,Python,For Loop,If Statement,在下面的代码中,列表T=[0,3,2,6,1,9],第一次迭代应该是3+6=9,第二次迭代应该添加上一次迭代的输出,即9到9-->9+9=18,我希望最终输出S=[3,9,18],但我的是S=[3,9,18,24,33]。看起来第二个循环是一个额外的循环,但我想知道如何做 S=[] S.append(T[0][1]) b = T[0][1] for i in range(len(T)-1): if T[i+1][0]-T[i][0]==1: f

在下面的代码中,列表T=[0,3,2,6,1,9],第一次迭代应该是3+6=9,第二次迭代应该添加上一次迭代的输出,即9到9-->9+9=18,我希望最终输出S=[3,9,18],但我的是S=[3,9,18,24,33]。看起来第二个循环是一个额外的循环,但我想知道如何做

S=[]
S.append(T[0][1])            
b = T[0][1]
for i in range(len(T)-1):
      if T[i+1][0]-T[i][0]==1: 
       for i in range(1,len(T)):  
          b+=T[i][1]         
          S.append(b) 

您可以执行以下操作:

T = [(0,3),(2,6),(1,9)]

res = []
first = True
for _,item in T:
    if first:
        res.append(item)
        first = False
    else:
        res.append(res[-1] + item)
print(res)
或者使用reduce,您可以执行以下操作:

import functools
T = [(0,3),(2,6),(1,9)]

def f(res, item):
    res.append( item[1] + res[-1] )
    return res

print( functools.reduce(f, T, [0])[1:] )

你说输出应该是[3,9,18],但你没有给出理由。你想解决什么问题?您的措辞意味着第二个元素的简单累积和,但您的代码对第一个元素进行了特殊的处理,并使用了On^2算法-这与求和的概念相冲突。你的代码远比简单的一行解决方案复杂。它也打印零。谢谢你指出这一点。我已经更新了答案。