Discuss / Python / yield 2 ?表示的是筛选掉倍数为2的递增无限序列?

yield 2 ?表示的是筛选掉倍数为2的递增无限序列?

Topic source

毛毛都嘟

#1 Created at ... [Delete] [Delete and Lock User]

def primes(): yield 2 it = _odd_iter() # 初始序列 while True: n = next(it) # 返回序列的第一个数 yield n it = filter(_not_divisible(n), it) # 构造新序列

看不懂,求大神解释,yield 2返回第一个素数2,那么4,6,8,10,等递增序列是怎么样被被筛选掉的呢。

vxzhg

#2 Created at ... [Delete] [Delete and Lock User]
 it = _odd_iter() # 初始序列

这一句构造的初始序列,第一个数是3,本来就没有2,4,6,8……仔细看看原文。所以第一句要yield 2

 it = filter(_not_divisible(n), it) # 构造新序列

这一句才是删除序列中能被n整除的数。比如,第一次删除的是能被3整除的数。


  • 1

Reply