您的位置:首页 >要闻 >

python filter函数(python filter)

导读 大家好,今天小六子来为大家解答以下的问题,关于python filter函数,python filter这个很多人还不知道,现在让我们一起来看看吧!1、不会

大家好,今天小六子来为大家解答以下的问题,关于python filter函数,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。

本文分享完毕,希望对你有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!