【问题标题】:How does 'for' evaluate to true or false in an all() function?在 all() 函数中,“for”如何评估为真或假?
【发布时间】:2020-04-21 20:40:24
【问题描述】:

我正在完成 Euler 项目,并已将其发送至 problem #7。我借助我在网上找到的一个视频制定了一个解决方案,但是有一行代码我不明白。这是问题和我的解决方案。

"""By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10 001st prime number?"""

primes = []
x = 2

while(len(primes)) < 10001:
    if all(x % prime for prime in primes):
        primes.append(x)
    x += 1

print(primes[-1])

我对 all() 函数感到困惑。我知道如果余数不为零,x % prime 将评估为 true,但函数对 for 语句的作用究竟是什么?提前致谢!

【问题讨论】:

  • all 将在生成器表达式中查找所有 True 值
  • 谷歌列表理解以了解更多关于该语法的信息,然后是生成器表达式
  • 许多提供基本文档的站点以及提供工作示例的站点都很好地涵盖了这一点。您的研究中有哪些不明白的地方?
  • 也许查看等效的python代码会有所帮助docs.python.org/3/library/functions.html#all在for循环中注意,当您第一次遇到评估为假的元素时,您会得到假,否则为真。用简单的英语 - 一个 interable 的所有值都必须为 true 才能使 all() 返回 true

标签: python function for-loop boolean


【解决方案1】:

函数正在使用list comprehension。它从数组primes 中获取每个数字并将它们定义为prime。然后它使用它来评估x % prime

放入 for 循环 x % prime for prime in primes 看起来像:

for prime in primes:
    return x % prime

接下来,all() 检查它们是否都等同于真(或真)。因此,如果上面提到的 for 循环的返回值之一为 false,则整个 if 语句都返回 false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多