我有一个算法,可以生成素清单作为发电机:蟒蛇过滤器不工作
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();下一页打印(_);下一页打印(_);然后打印(_);'打印'2',然后'3',然后挂起。你使用的是什么版本的Python? –