|
本帖最后由 影龙设计 于 2018-10-13 22:46 编辑
def naturl():
i = 1
while True:
i = i + 2
yield i
def not_divisible(n):
return lambda x: x % n
def primes():
yield 2
it = naturl()
while True:
n = next(it)
yield n
a = not_divisible(n)
it = filter(a, it)
for i in primes():
if i < 1000:
print(i)
else:
break
上面是求素数序列的小案例
我希望把not_divisible直接整合到primes中,如下:def naturl():
i = 1
while True:
i = i + 2
yield i
def primes():
yield 2
it = naturl()
while True:
n = next(it)
yield n
a = lambda x: x % n
it = filter(a, it)
for i in primes():
if i < 1000:
print(i)
else:
break
上面的运行正确,下面的运行结果错误,请问下面的改动为什么错了,原理是什么?
|
|