我有一些表单的代码:
for i in range(nIterations):
y = f(y)其中f是在其他地方定义的函数。希望这段代码的想法是,在运行之后,y将在nIterations次对其应用f。
在python中有没有一种方法可以把它写成一行?
发布于 2009-12-08 23:34:24
是像这样吗?
for i in range(nIterations): y = f(y)只有一个命令的for循环可以写成一行。
编辑
或者稍微干净一点:
for _ in xrange(nIterations): y = f(y)既然你不想有一个可以被分成两个单独的语句的东西(我想),下面是另一个:
reduce(lambda y, _: f(y), xrange(nIterations), initValue)尽管如此,我还是建议只使用您的原始代码,它更直观,可读性更好。还要注意Guido van Rossum对循环和repeat的看法。顺便说一句,(在Python2.x中)对于大型nIterations,xrange比range更有效,因为它返回的是实际的迭代器,而不是分配的列表。
发布于 2009-12-08 23:35:13
你是说像这样吗?
for i in range(nIterations): y = f(y)虽然这看起来很不错,但我认为(正如你的帖子下面的评论所做的那样),这个不会提高可读性,最好是留成2行。
发布于 2009-12-08 23:36:35
只需将所有内容放在一行中,就像这样:for i in range(nIterations): y = f(y)
将代码放在一行还是多行的决定已经争论了很多年--没有性能提升--只是展示一下你喜欢它的方式,以及你的如何才能读得最好。
https://stackoverflow.com/questions/1867715
复制相似问题