我有以下列表:
[0.0,
3.4,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
3.3,
3.3,
4.0,
0.0,
0.0,
0.0,
3.3,
0.0,
0.0,
3.5,
3.8,
0.0,
0.0,
3.25,
0.0,
0.0,
4.75,
3.3,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
3.4,
4.75,
0.0,
0.0,
0.0,
3.25,
0.0,
3.2,
0.0]
在此列表中,0表示例如当一个人下注时,而当数字> 0时,意味着一个人以3.4的赔率赢得了下注。但是,我正在尝试基于此列表创建一个累积列表。意思是,基于此列表,累积列表应为(假设我们下注-5):
[-5, 3.4*10,-5,-10,-20,-40,-80,-160,-320,3.3*640,3.3*5,4*5,-5,-10,-20,3.3*40]
基本上,每次有人下注都会加倍,每次有人下注时都会重置。
答案 0 :(得分:0)
您可以使用具有以下逻辑的函数-对于原始列表中的每个值,检查它是否大于0。如果是,则将当前投注的值乘以该值,然后返回到返回列表当前下注到开始下注。否则,将-1*curr_bet
附加到返回列表中,并将当前下注加倍。
def get_list(bets, start_bet):
rv = []
curr_bet = start_bet
for bet in bets:
if bet > 0:
rv.append(curr_bet*bet)
curr_bet = start_bet
else:
rv.append(-1*curr_bet)
curr_bet = curr_bet*2
return rv
假设bets
是您的问题列表,我们可以这样调用函数:
>>> get_list(bets, 5)
[-5,
34.0,
-5,
-10,
-20,
-40,
-80,
-160,
-320,
2112.0,
16.5,
20.0,
-5,
-10,
-20,
132.0,
-5,
-10,
70.0,
19.0,
-5,
-10,
65.0,
-5,
-10,
95.0,
16.5,
-5,
-10,
-20,
-40,
-80,
-160,
-320,
-640,
-1280,
-2560,
-5120,
-10240,
-20480,
139264.0,
23.75,
-5,
-10,
-20,
130.0,
-5,
32.0,
-5]