今天小编mail为大家分享的生活小常识,希望能够帮助到大家!
pythonfilter函数的用法这个很多人还不知道,现在让我们一起来看看吧!
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。
Luochuanren.Com洛川人-综合信息门户网站,涵盖生活常识、美食、创业、体育、旅游、家居、汽车、财经、互联网、科技、房产、教育等资讯。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
工作时间:8:00-18:00
客服电话
17898872021
电子邮件
773537036@qq.com
扫码二维码
获取最新动态