Python 如何使用if语句是嵌套循环
在下面的代码中,列表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]。看起来第二个循环是一个额外的循环,但我想知道如何做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
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算法-这与求和的概念相冲突。你的代码远比简单的一行解决方案复杂。它也打印零。谢谢你指出这一点。我已经更新了答案。