为了账号安全,请及时绑定邮箱和手机立即绑定

如何定义一个引用范围内先前值的函数?

如何定义一个引用范围内先前值的函数?

ABOUTYOU 2021-10-10 16:06:47
所以我试图定义一个数学上看起来像这样的函数: 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,迭代器在迭代时产生结果。


查看完整回答
反对 回复 2021-10-10
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信