python中无for循环的迭代

rdrgkggo  于 2021-08-20  发布在  Java
关注(0)|答案(3)|浏览(423)

这一定很琐碎。
我想计算一下。
100*((1+r)**n),对于n=0,1,2,…,n
我用了下面的方法。

>>> list(itertools.accumulate([c0, range(5)], lambda w,r: w*(1.02**r)))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
TypeError: unsupported operand type(s) for**or pow(): 'float' and 'range'```
z18hc3ub

z18hc3ub1#

一种方法是列表理解

[100*((1 + r)**n) for n in range(N)]

这将为n的每个值提供一个列表,0<=n<n

rseugnpd

rseugnpd2#

你需要打开(星号, * )你的 range :

list(itertools.accumulate([c0, *range(5)], lambda w,r: w*(1.02**r)))
vatpfxk5

vatpfxk53#

您需要范围来构建数字列表;将范围(5)放入列表不会实际生成列表:

list1 = [c0] + [i for i in range(5)]

相关问题