3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用max和的組合min:
soc = [0]
for i in dispatch:
soc.append(min(max(soc[-1] + i, 0), 50))
soc = soc[1:]
print(soc)
輸出:
[12, 35, 50, 50, 27, 4, 0, 23, 50, 0, 0, 0]

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
您正在從 中減去負(fù)值charge。于是,就變成了charge - (-value)。因?yàn)?,我們知?2 個(gè)負(fù)數(shù)形成一個(gè)正數(shù)。因此,它將添加兩個(gè)值并選擇它,因?yàn)樗鼤?huì)大于 0。
...
else:
# Add i to charge
charge = max(charge + i, 0)# lower restriction 0
soc.append(charge)

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
也許試試這個(gè):
dispatch = [12,23,34,45,-23,-23,-12,23,34,-54,-54,-67]
charge = 0
soc = []
for i in dispatch:
charge = min(charge + i, 50) if i > 0 else 0
soc.append(charge)
print(soc)
添加回答
舉報(bào)