【发布时间】:2017-05-30 20:20:30
【问题描述】:
下面是我发现的一个使用Sieve of Eratosthenes 查找素数的python 程序。它使用过滤器和生成器。看不懂。
def _odd_iter():
n = 1
while True:
n = n + 2
yield n
def _not_divisible(n):
return lambda x: x % n > 0
def primes():
yield 2
it = _odd_iter()
while True:
n = next(it)
yield n
it = filter(_not_divisible(n), it)
for n in primes():
if n < 1000:
print(n)
else:
break
我不明白的是it = filter(_not_divisible(n), it)。比如105这个单行代码是怎么排除的?
【问题讨论】:
-
你熟悉装饰器吗?用这个概念解释起来会简单得多
-
我知道decorator是怎么工作的,能详细解释一下吗?
标签: python algorithm generator yield