python filter map(python filter函數)

導讀 您好,現在漢漢來為大家解答以上的問題。python filter map,python filter函數相信很多小伙伴還不知道,現在讓我們一起來看看吧!1、不會...

您好,現在漢漢來為大家解答以上的問題。python filter map,python filter函數相信很多小伙伴還不知道,現在讓我們一起來看看吧!

1、不會死循環,生成器是個虛擬抽象的概念,你可以認為_odd_iter()?primes() 里面運行的時候python解釋器并不生成實際的List,也就不會耗費內存和時間真正分配給List內存只在以下過程, primes()這個生成器是逐步分配內存的!!for?n?in?primes():????if?n<1000:????????print(n)????else:????????break另外提醒你下,你的程序只能在Python 3.x版本下正確運行:-)因為你用的是 filter返回生成器對象的用法!!如果你要你的程序在Python 2.x正確運行,需改成如下形式。

2、根據你最新的追問,“為什么it=filter(lambda x : x%n>0 ,it)不行??“直接在filter里用Lambda表達式是完全可以的,你的原因是你的Lambda表達式漏輸入了一個n,請看如下形式.#?Python?2.x下需導入itertools庫的ifilter才能和python?3.x的filter等效import?itertoolsdef?_odd_iter():????n=1????while?True:????????n=n+2????????yield?ndef?_not_divisible(n):????return?lambda?x:x%n>0def?primes():????yield?2????it=_odd_iter()????while?True:????????n=next(it)????????yield?n????????#it=***.ifilter(_not_divisible(n),it)????????it?=?***.ifilter(lambda?x,?n=n:?x%n?>?0,?it)for?n?in?primes():????if?n<1000:????????print(n)????else:????????break。

本文就為大家分享到這里,希望小伙伴們會喜歡。

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!