Python 查找具有条件的列表的和

Python 查找具有条件的列表的和,python,Python,我被一个问题困住了 我有一个列表L=[1,2,3,4,5,6,7,8,9] 我想找到列表中元素的总和,如果总和超过25。我想得到上一笔钱 例如,1+2+3+4+5+6+7=28,28>25。因此,我希望最终的变量和为21 我正在使用if组合,但我不想使用if。有更好的方法吗?下面是我的代码 L = [1,2,3,4,5,6,7,8,9] summ = 0 for val in L: summ+= val if summ > 25: summ-=val 您

我被一个问题困住了

我有一个列表L=[1,2,3,4,5,6,7,8,9]

我想找到列表中元素的总和,如果总和超过25。我想得到上一笔钱

例如,1+2+3+4+5+6+7=28,28>25。因此,我希望最终的变量和为21

我正在使用if组合,但我不想使用if。有更好的方法吗?下面是我的代码

L = [1,2,3,4,5,6,7,8,9]
summ = 0

for val in L:
    summ+= val
    if summ > 25:
        summ-=val
您可以使用while循环:


我想困扰你的是summ-=val部分,而不是if部分。还有一个带reduce的单线解决方案


将条件积分到数学表达式中如何:

L = [1,2,3,4,5,6,7,8,9]
summ = 0

for val in L:
    summ = summ+val*(summ+val <= 25)

使用pandas,在由列表中的数字组成的序列上取累积和。将值NaN指定给超过最大值的任何累积和。填充-转发结果并转换回整数列表

import pandas as pd

max_val = 25
a = range(1, 10)
s = pd.Series(a).cumsum()
s.loc[s > max_val] = np.nan
>>> s.ffill().astype(int).tolist()
[1, 3, 6, 10, 15, 21, 21, 21, 21]

这是人为的家庭作业要求,还是有充分的理由不使用if?
L = [1,2,3,4,5,6,7,8,9]
summ = 0

for val in L:
    summ = summ+val*(summ+val <= 25)
import pandas as pd

max_val = 25
a = range(1, 10)
s = pd.Series(a).cumsum()
s.loc[s > max_val] = np.nan
>>> s.ffill().astype(int).tolist()
[1, 3, 6, 10, 15, 21, 21, 21, 21]