【问题标题】:How to multiply a number of a list by the number of previous zeros on list?如何将列表的数量乘以列表中先前零的数量?
【发布时间】:2019-12-23 18:29:13
【问题描述】:

我有以下列表:

[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的个数?
  • 你是在问如何做阶乘

标签: python list math count iteration


【解决方案1】:

您可以使用具有以下逻辑的函数 - 对于原始列表中的每个值,检查它是否大于 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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多