Discuss / Python / 关于filter的惰性的问题

关于filter的惰性的问题

Topic source

老师,我有一个问题求教: 教程中求素数的代码: while True: n = next(it) # 返回序列的第一个数 yield n it = filter(_not_divisible(n), it) # 构造新序列 第一次loop,n = 3,然后用_not_divisible(3)去过滤it,可这时it的下一个元素5还没计算出来; 第二次loop,n = 5,这个应该是被_not_divisible(3)过滤过的,那是不是说,用next(it)生成it的下一个元素时,才运行前一句filter?那么,it中靠后的元素,比如说9,用next(it)生成时才依次用_not_divisible(3),_not_divisible(5),_not_divisible(7)去过滤?


  • 1

Reply