小编Jer*_*zuk的帖子

Python生成器; 两个看似相同的程序工作方式不同

下面的程序[Python 3.4]是一个简单的Eratosthenes筛:

from itertools import *
def excl(ns,pr):
    return (i for i in ns if i%pr)
def sieve(ns):
    while True:
        pr=next(ns)
        yield pr
        ns=excl(ns,pr)
        # ns=(i for i in ns if i%pr)
r=list(islice(sieve(count(2)),10))
Run Code Online (Sandbox Code Playgroud)

产生[2,3,5,7,11,13,17,19,23,29].好.取消注释内联excl()并注释该调用的行,给出[2,3,4,5,6,7,8,9,10,11].为什么?

它是否与在迭代中循环的循环中的序列进行调整时遇到的麻烦有关?

谢谢你的提示.

python generator sieve

6
推荐指数
1
解决办法
79
查看次数

标签 统计

generator ×1

python ×1

sieve ×1