簡體   English   中英

查找條件清單

[英]Find Sum of list with condition

我陷入一個問題。

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

我想要在列表中找到元素的總和,以便如果總和超過25。我想獲得之前的總和。

例如 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28,28> 25。 因此,我希望最終變量總和為21。

我正在使用for-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

我認為困擾您的是summ-=val部分,而不是if 還有就是用一個在線解決方案reduce

>>> from functools import reduce
>>> L = [1,2,3,4,5,6,7,8,9]
>>> reduce(lambda x, y: x + y if x + y <= 25 else x, L)
21

  1. https://docs.python.org/3/library/functools.html#functools.reduce

您可以使用while循環:

L = [1,2,3,4,5,6,7,8,9]
i = 0
s = 0
while i < len(L) and s + L[i] < 25:
    s += L[i]
    i += 1

如何將條件整合到數學表達式中:

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

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

使用大熊貓,對列表中的數字組成的系列求和。 賦值NaN超過任何任何累積和max_value 向前填充結果並轉換回整數列表。

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM