for循环中的递归公式

时间:2017-12-27 22:52:50

标签: python list recursion

我需要在我的代码块中实现递归公式

bayesian_prices = [] 
for i in range(10):
    q = dayqvalue(i, grid, fullData)
    w = compute_dayweights(q)
    option_data, index_prices, initial_date = get_samedated_opt(fullData, i, 1)
    callput, tmt, ex, mkt =  orderdata(option_data)
    baypr = compute_bayesian_prices(w, grid, callput, tmt, ex, index_prices)
    bayesian_prices.append(baypr)

我需要做的是关于“q”的计算。每次我需要计算q作为旧值和从函数“dayqvalue”获得的新值的总和。换句话说,当i = 0时,计算第一q值列表。然后在i = 1的情况下,我应该有一个列表,它是在0处计算的q和在1处计算的q的总和,依此类推。 for循环最后一次运行时,我应该有一个q列表,它是所有先前列表加上新列表的总和。有没有一种简单的方法来实现它?列表q包含大约一千个元素。

修改

q是1000个元素的列表。每次我都应该通过条目添加一个新的1000个元素列表到前一个。例如,假设在qi=0时计算i=1。我会在前两个条目中获得newq = [q_0[0] + q_1[0] , q_0[1] + q_1[1]]。列表newq应与q_0q_1的长度相同。它应该包含按条目输入的值的总和。

1 个答案:

答案 0 :(得分:0)

q初始化为1000 0的列表。然后,每次循环时,将函数返回的新q与现有q合并。

bayesian_prices = [] 
q = [0]*1000
for i in range(10):
    newq = dayqvalue(i, grid, fullData)
    q = [sum(x) for x in zip(q, newq)]
    w = compute_dayweights(q)
    option_data, index_prices, initial_date = get_samedated_opt(fullData, i, 1)
    callput, tmt, ex, mkt =  orderdata(option_data)
    baypr = compute_bayesian_prices(w, grid, callput, tmt, ex, index_prices)
    bayesian_prices.append(baypr)

有关添加两个列表的其他方法,请参阅Element-wise addition of 2 lists?