首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表理解(Euler项目5)

Python列表理解(Euler项目5)
EN

Stack Overflow用户
提问于 2013-06-28 23:11:33
回答 2查看 179关注 0票数 0
代码语言:javascript
复制
x = False
divisors = [2,3,4,5,6,7,8,9,10]
for i in range (10,10000,10):
    if [x for x in divisors if i % x == 0]:
        print(i)
        break

我能得到一些关于为什么这个程序打印10的提示吗?它应该打印..。2520

我花了那么多时间在这个问题上,我想我不太理解清单的理解,它是如何工作的,它的回报。

如果的任何一个除法的产生一个浮点数,我希望if语句会产生假。

我需要用石膏吗?

我说得对吗( 10,10000 ,10)列出了10,20,30,40,…,10000的列表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-28 23:14:46

尝试将其更改为以下内容:

代码语言:javascript
复制
divisors = [2,3,4,5,6,7,8,9,10]
for i in range (10,10000,10):
    if all(i % x == 0 for x in divisors):
         print(i)
         break

当前版本中的列表理解将始终包含最后3个值,因为10的每一个倍数都可以被2、5和10平均整除。非空列表在布尔上下文中的计算结果为真,因此在第一次迭代时将输入if块。

内置函数all()接受一个可迭代函数,只有当每个元素为true (或在布尔上下文中计算为true )时才返回True。因此,它非常适合确定i是否可以被整除-- divisors中的所有值。

票数 4
EN

Stack Overflow用户

发布于 2013-06-28 23:23:37

让我们把它分解。首先,

代码语言:javascript
复制
x = False

除了乱七八糟的代码什么也不做。别用那个。下一个节目:

代码语言:javascript
复制
for i in range (10,10000,10):

如果不查看该项目,请注意range()将产生小于停止值的所有值,因此将以9990结尾。如果这是你想要的,好吧-要小心。

最后:

代码语言:javascript
复制
    if [x for x in divisors if i % x == 0]:

它读为“创建一个divisors中所有数字的列表,该列表均匀地划分为i",然后”如果我刚刚创建的列表不是空的,那么.“。因此,当i == 10时,该列表的计算结果为[2, 5, 10]。这不是一个空列表,因此它的计算结果为True,并且运行if块。

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

https://stackoverflow.com/questions/17374957

复制
相关文章

相似问题

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