#构造一个从3开始的奇数序列:
def _odd_iter(): n = 1 while True: n = n + 2 yield n
#定义一个筛选函数
#定义一个生成器,不断返回下一个素数
def primes(): yield 2 it = _odd_iter() # 初始序列 while True: n = next(it) # 返回序列的第一个数 yield n it = filter(lambda x: x % n > 0, it) # 构造新序列
for n in primes(): if n < 1000: print(n) else: break
我仔细对比了一下,例子中的代码是先把n作为参数传入_not_divisible函数中,然后返回了一个关于x的函数,你这样一改就相当于直接传入x作为参数,逻辑关系就混乱了
Sign in to make a reply
登贝莱Dembele
#构造一个从3开始的奇数序列:
def _odd_iter(): n = 1 while True: n = n + 2 yield n
#定义一个筛选函数
#定义一个生成器,不断返回下一个素数
def primes(): yield 2 it = _odd_iter() # 初始序列 while True: n = next(it) # 返回序列的第一个数 yield n it = filter(lambda x: x % n > 0, it) # 构造新序列
打印1000以内的素数:
for n in primes(): if n < 1000: print(n) else: break