Merged iterators produce obscure results
问题 I'm trying to implement prime number generator using Sieve of Eratosthenes algorithm. I do it just to try using recursive iterator merging to implement sifter. What I do is this: from itertools import count,islice,groupby from heapq import merge def primes3(): p = 2 yield p sifter = (i*p for i in count(p)) s = next(sifter) for p in count(p+1): if p==s: # this p is sieved out print('s: {}'.format(s)) s = next(sifter) else: yield p # this is prime print('p: {}'.format(p)) sifter = (k for k, g