rld在python_python-高级特性

*********生成器*************

在Python中,这种一边循环一边计算的机制,称为生成器(Generator),节省大量的空间。

列表生成式,当生成时元素即打印,会占用内存。

一、读取生成器元素的两种方式:

*l.next()

*for循环读取;(生成器是可迭代对象);

列表生成式,当生成时元素即打印,会占用内存;

In [5]: l = [i for i in range(1,11)]

In [6]: print l

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

In [7]: h = (i for i in range(1,11))  #将[] 改为()可创建生成器

*)生成器是可迭代对象

In [11]: from collections import Iterable #导入模块

In [12]: lh = (i**2 for i in range(3))

In [13]: isinstance(lh,Iterable)  #判断

Out[13]: True

*for循环读取

练习:生成著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都

可由前两个数相加得到

1, 1, 2, 3, 5,    8, 13,    21, 34,    ...

二、*)yield关键字

a.如果函数里面有yield关键字,那么调用这个函数的结果赋给的变量为生成器

b.当生成器g调用第一个next方法时,会运行函数,直到遇到第一个yield停止

c.当调用第二个next方法时,会从停止的地方继续执行,知道遇到下一个yield

*)next方法与yield关键字的关系

In [18]: print lh.next()      #第一个next,遇到第一个yirld结束,打印1

first

1

In [19]: print lh.next()      #第二个next,遇到第二个yirld结束,打印2

second

2

In [20]: print lh.next()       #第三个next,遇到第三个yirld结束,打印3

third

3

三、*)生成器的send方法

a.使用send方法给生成器函数发送数据

b.使用send方法前,必须先调用一次next()方法

c.遇到下一个yield停止

*)消费者-生产者模型

*)生成器实战应用:迷你聊天机器人

NOTE: > Executing update_desktop_database intercept ... NOTE: > Executing update_gtk_immodules_cache intercept ... NOTE: Exit code 1. Output: /home/wu/g2l/build-niicl-nom-r001l/tmp/work/nom_r001l-niic-linux/core-image-weston/1.0-r0/intercept_scripts-b51052418cd1de15aa19deeae9844eade47e1e2e32985d114ac9c6c1afe994aa/update_gtk_immodules_cache: line 15: /home/wu/g2l/build-niicl-nom-r001l/tmp/work/nom_r001l-niic-linux/core-image-weston/1.0-r0/rootfs/usr/lib64/gtk-3.0/3.0.0/immodules.cache: No such file or directory chown: cannot access '/home/wu/g2l/build-niicl-nom-r001l/tmp/work/nom_r001l-niic-linux/core-image-weston/1.0-r0/rootfs/usr/lib64/gtk-3.0/3.0.0/immodules.cache': No such file or directory ERROR: The postinstall intercept hook 'update_gtk_immodules_cache' failed, details in /home/wu/g2l/build-niicl-nom-r001l/tmp/work/nom_r001l-niic-linux/core-image-weston/1.0-r0/temp/log.do_rootfs NOTE: > Executing update_desktop_database intercept ... NOTE: > Executing update_gtk_immodules_cache intercept ... NOTE: Exit code 1. Output: /home/wu/g2l/build-niicl-nom-r001l/tmp/work/nom_r001l-niic-linux/core-image-weston/1.0-r0/intercept_scripts-b51052418cd1de15aa19deeae9844eade47e1e2e32985d114ac9c6c1afe994aa/update_gtk_immodules_cache: line 15: /home/wu/g2l/build-niicl-nom-r001l/tmp/work/nom_r001l-niic-linux/core-image-weston/1.0-r0/rootfs/usr/lib64/gtk-3.0/3.0.0/immodules.cache: No such file or directory chown: cannot access '/home/wu/g2l/build-niicl-nom-r001l/tmp/work/nom_r001l-niic-linux/core-image-weston/1.0-r0/rootfs/usr/lib64/gtk-3.0/3.0.0/immodules.cache': No such file or directory ERROR: The postinstall intercept hook 'update_gtk_immodules_cache' failed, details in /home/wu/g2l/build-niicl-nom-r001l/tmp/work/nom_r001l-niic-linux/core-image-weston/1.0-r0/temp/log.do_rootfs DEBUG: Python function do_rootfs finished如何解决
07-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值