如何将列表中的数字乘以列表中先前的零数?

时间:2019-12-23 18:29:13

标签: python list count

我有以下列表:

[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]

基本上,每次有人下注都会加倍,每次有人下注时都会重置。

1 个答案:

答案 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]