迭代在一行

Vol*_*orm 0 python

我有一些形式的代码:

for i in range(nIterations):
    y = f(y)
Run Code Online (Sandbox Code Playgroud)

f其他地方定义的函数在哪里.希望该代码的想法是,它运行之后yf适用于它的nIterations时间.

在python中有一种方法可以将它写在一行中吗?

cat*_*try 6

像这样?

for i in range(nIterations): y = f(y)
Run Code Online (Sandbox Code Playgroud)

带有一个命令的for循环可以写成一行.

编辑

或者可能稍微清洁:

for _ in xrange(nIterations): y = f(y)
Run Code Online (Sandbox Code Playgroud)

既然你不想要一个可以分成两个单独的语句的东西(我想),这里是另一个:

reduce(lambda y, _: f(y), xrange(nIterations), initValue)
Run Code Online (Sandbox Code Playgroud)

不过,我建议您只使用原始代码,它更直观,更易读.还要注意Guido van Rossum对循环的评价repeat.注意(在python 2.x中)xrangerange大型n迭代更有效,因为它返回实际的迭代器而不是分配的列表.