一、列表生成式
1、生成abc与def的全排列
2、1)输出列表里的名字 并且第一个字母大写
2)当列表里有名字是非法字符时候,输出列表里的名字 并且第一个字母大写
3、找出指定目录下以.log结尾的文件
import os模块
os.listdir(文件名) 查看目录下面的所有文件
二、生成器
为什么需要生成器?
通过列表生成式,我们可以直接创建一个列表,受到内存限制,列表的容量肯定是有限的;通过生成器节省内存。
通过生成器在循环过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。在python中,这种一边循环一边计算的机制,称为生成器。
例子:
1、Fibonacci数列(后一个数等于前两个数之和)
生成6个Fibonacci数列
在函数里面,加yield关键字,当调用有yield关键字函数时,返回的时生成器
yield工作原理:调用g.next()方法时,执行函数,遇到yield就停止执行;再次执行g.next()
2、怎么访问生成器内容
1)g.next()方法=next(g);需要几个调用几个;
.next():运行生成器函数,遇到yield停止,再次next()
.send()给生成器函数传值,实现与生成器的交互,在函数的yield的前面可以通过一个变量接收值
.close:关闭生成器,不能在调用next方法;否则报错StopItertion(迭代器已经停止)
.throw:给生成器发送一个异常;
什么是异常:NameErrow,ZeroDivisionError.....
三、生成器应用
生产者---消费者模型
1、卖包子
consume函数=yield;是生成器函数
c1.next()停止在kind = yield这一行
2、在1)的基础上增加厨师
cunsumer和produce函数=yield;是生成器函数
3、迷你聊天机器人