我有一個算法,可以生成素清單作爲發電機:蟒蛇過濾器不工作
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? –