所以我试图定义一个数学上看起来像这样的函数: M_n = M_n-1(1+g) –– 其中 n 和 n-1 是下标,g 是常数。我想在 1 到 100 的范围内执行此操作。我已经有了 n=1 的值。我到现在为止的代码看起来像这样for num in range(1,100): if num <= 1: print(M_n) # since I already have an M_n for n=1因此,从 n=2 开始,我如何确保 M_n 引用其先前的值并对其执行以下操作:M_n-1(1+g)?任何帮助将非常感激!
1 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
M_(n-1)只是最近的计算,在循环的前一次迭代中产生的计算。将其存储在一个变量中,并在下一次迭代中再次引用它。
如果您不需要中间M_n值,只需保留一个更新的结果:
m = 1 # M_0, so the starting value for the sequence
for n in range(1, 100):
# update M_n for the current iteration
m *= 1 + g
或者您可以附加到列表(此时前面的值始终是列表中的最后一个值):
m = [1] # list with M_0, so the starting value for the sequence
for n in range(1, 100):
# add M_n for the current iteration
m.append(m[-1] * (1 + g))
或用于itertools.accumulate()累积所有值:
from itertools import accumulate, chain
calc_mn = lambda prev, n: prev * (1 + g)
# calculate starting from [1] for M_0
m = accumulate(chain([1], range(1, 100)), calc_mn)
在后一种情况下m,迭代器在迭代时产生结果。
添加回答
举报
0/150
提交
取消