Python之高级特性(2)

一、列表生成式

1、生成abc与def的全排列

2、1)输出列表里的名字 并且第一个字母大写


2)当列表里有名字是非法字符时候,输出列表里的名字 并且第一个字母大写


3、找出指定目录下以.log结尾的文件

import os模块 

os.listdir(文件名) 查看目录下面的所有文件



二、生成器

为什么需要生成器?

通过列表生成式,我们可以直接创建一个列表,受到内存限制,列表的容量肯定是有限的;通过生成器节省内存。

通过生成器在循环过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。在python中,这种一边循环一边计算的机制,称为生成器。

例子:

1、Fibonacci数列(后一个数等于前两个数之和)

生成6Fibonacci数列


在函数里面,加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、迷你聊天机器人



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页