[英]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
您可以使用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.