我有一个算法可以生成质数列表作为生成器:
def _odd_iter():
n=3
while True:
yield n
n=n+2
def _not_divisible(n):
return lambda x: x % n > 0
def primes():
yield 2
L=_odd_iter()
while True:
n=next(L)
yield n
L=filter(_not_divisible(n), L)
x=1
for t in primes():
print(t)
x=x+1
if x==10:
break
但是如果我直接将lambda函数放入filter
函数中,例如下面:
def primes():
yield 2
L=_odd_iter()
while True:
n=next(L)
yield n
L=filter(lambda x: x%n>0, L)
我只能得到奇数列表,而不是质数列表。似乎filter
函数不起作用。
我该怎么办?
lambda x=x: ...
吗? - TigerhawkT3_ = primes(); print next(_); print next(_); print next(_);
打印出2
,然后是3
,然后就卡住了。你使用的是哪个版本的Python? - A. Vidor