首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单行迭代

单行迭代
EN

Stack Overflow用户
提问于 2009-12-08 23:31:45
回答 11查看 5.3K关注 0票数 0

我有一些表单的代码:

代码语言:javascript
运行
复制
for i in range(nIterations):
    y = f(y)

其中f是在其他地方定义的函数。希望这段代码的想法是,在运行之后,y将在nIterations次对其应用f

在python中有没有一种方法可以把它写成一行?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-12-08 23:34:24

是像这样吗?

代码语言:javascript
运行
复制
for i in range(nIterations): y = f(y)

只有一个命令的for循环可以写成一行。

编辑

或者稍微干净一点:

代码语言:javascript
运行
复制
for _ in xrange(nIterations): y = f(y)

既然你不想有一个可以被分成两个单独的语句的东西(我想),下面是另一个:

代码语言:javascript
运行
复制
reduce(lambda y, _: f(y), xrange(nIterations), initValue)

尽管如此,我还是建议只使用您的原始代码,它更直观,可读性更好。还要注意Guido van Rossum对循环和repeat的看法。顺便说一句,(在Python2.x中)对于大型nIterations,xrangerange更有效,因为它返回的是实际的迭代器,而不是分配的列表。

票数 6
EN

Stack Overflow用户

发布于 2009-12-08 23:35:13

你是说像这样吗?

代码语言:javascript
运行
复制
for i in range(nIterations): y = f(y)

虽然这看起来很不错,但我认为(正如你的帖子下面的评论所做的那样),这个不会提高可读性,最好是留成2行。

票数 3
EN

Stack Overflow用户

发布于 2009-12-08 23:36:35

只需将所有内容放在一行中,就像这样:for i in range(nIterations): y = f(y)

将代码放在一行还是多行的决定已经争论了很多年--没有性能提升--只是展示一下你喜欢它的方式,以及你的如何才能读得最好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1867715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档