首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换规则用于列表理解

转换规则用于列表理解
EN

Stack Overflow用户
提问于 2016-03-24 19:34:58
回答 1查看 13关注 0票数 0

我有这段代码(下面),我想把它转换成“列表理解”的方式:

代码语言:javascript
运行
复制
order = [1]
for num2 in range(2,10):
    if num2%order[-1]  == 0:
        order.append(num2)

这段代码只生成一个列表,其中ai<ai+1 ai+1%ai==0

1、2、4、8

在这种情况下,我如何使用列表理解?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-24 19:42:04

你不能用列表理解来解释这个问题。在理解结束之前,列表不会绑定到名称,因此表达式无法构建每个值(在第一个值之后)来引用它。

如果需要将列表创建为表达式,请将当前循环放入可以调用的函数中。然后,您可能会考虑将其转换为生成器,而不是返回列表,但这是一个单独的设计选择。

最后一点:您的代码碰巧产生了2的能力,尽管这不是您计算它们的方法。如果这确实是您所需要的,您可以使用列表理解来创建相同的输出:

代码语言:javascript
运行
复制
order = [2**i for i in range(4)]

但是,您必须指定结果的数量(例如,在我的理解中是4 ),而不是值的上限(例如,原始循环中的10 )。

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

https://stackoverflow.com/questions/36208623

复制
相关文章

相似问题

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