在使用列表推导生成素数时使用`all()`函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在使用列表推导生成素数时使用`all()`函数相关的知识,希望对你有一定的参考价值。

我试图生成所有素数达到一定限度,并在另一个条目中找到我的问题的下面答案。有人可以在这里解释使用all()功能。我知道它会在像Trueall([1,2,3])这样的情况下生成False

all([1,2,False])
答案

通过决定单个数字是否为素数来解释代码:

让我们看看5是否是素数

[x for x in range(2, 20) if all(x % y != 0 for y in range(2, x))]

所以calculation = [5%2!=0?, 5%3!=0?, 5%4!=0?] Calculation = [True, True, True] all(calculation) -> True (because all element of an iterable object(list) is true) 是素数

现在让我们看看4是否是素数:

5

所以calculation = [4%2!=0?, 4%3!=0?] Calculation = [False, True] all(calculation) -> False (because if any element in an iterable collection is false means all() will return false.) 不是素数注:上面不是有效的代码。只是解释。

另一答案
4

首先让我们来评估一下[x for x in range(2, 20) if all(x % y != 0 for y in range(2, x))] 的内容:

all()

x % y != 0 for y in range(2, x) 获得剩余部分 x % y不等于0 != 0为y,范围为2到x

因此,for y in range(2, x)检查all()的所有条件,如果是,则评估True。这是正在检查Prime的原因,因为那些是主要条件,所有数字在将当前数字除以其他数字时没有剩余0,这意味着它可以被整除,因此不是素数。

另一答案

只是将列表理解翻译成英文:

对于2和20之间的每个数字(即19),如果存在余数,则在2和第n个整数之间存在余数,其中n = x(即小于x),则保留列表中的数字。

具体例子:

True

以上是关于在使用列表推导生成素数时使用`all()`函数的主要内容,如果未能解决你的问题,请参考以下文章

python之生成器和列表推导式

python函数--生成器,生成器表达式,列表推导式

一文彻底讲透Python列表推导式迭代器生成器匿名函数

生成器列表推导式生成器表达式

2.2.2 生成器推导式

列表推导式和生成器