python - python中else子句的不同用法(不是最常见的)

标签 python generator if-statement

在 6.00x edX 中有一个习题,他们给出的答案建议如下:

def genPrimes():
    primes = []   # primes generated so far
    last = 1      # last number tried
    while True:
        last += 1
        for p in primes:
            if last % p == 0:
                break
        else:
            primes.append(last)
            yield last

查看标识可以清楚地看到这个 ELSE 与 IF 无关。我认为这是一个错误,但当我执行时,代码没有问题,我不明白发生了什么,ELSE 做了什么?

最佳答案

它在 for 循环完成遍历列表时执行。但是,就您所举的示例而言。如果 break 被调用,则 else 将不会被执行。

关于python - python中else子句的不同用法(不是最常见的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297649/

相关文章:

python 生成器太慢而无法使用。我为什么要使用它?什么时候?

javascript - 我们可以用 ES6 Generator 做哪些不能用 for 循环做的事情?

java - 简化嵌套 if else 循环 Java 中的认知复杂性

bash - 或者在 bash 中使用 grep 声明

python - 来自 STATIC_URL 的 Django 2 图像未在 Css 中加载

python sklearn cross_validation/标签数量与样本数量不匹配

python - python2中numpy的切片操作

python - 根据用户输入实例化不同的类

ruby-on-rails - 如何安装和使用 Ruby on Rails 金属生成器?

linux - 预期为整数表达式 (Bash)