5.15 13Day

一.推导式 : 用一行循环判断遍历出一系列数据的方式
推导式在使用时,只能用for循环和判断,而且判断是能是单项判断

二.字典推导式
enumerate(iterable,[start=0])
功能:枚举 ; 将索引号和iterable中的值,一个一个拿出来配对组成元组放入迭代器中
参数:
iterable: 可迭代性数据 (常用:迭代器,容器类型数据,可迭代对象range)
start: 可以选择开始的索引号(默认从0开始索引)
返回值:迭代器

zip
zip(iterable, ... ...)
功能: 将多个iterable中的值,一个一个拿出来配对组成元组放入迭代器中
iterable: 可迭代性数据 (常用:迭代器,容器类型数据,可迭代对象range)
返回: 迭代器
特点:不能匹对的多余值会被舍弃

三.生成器
(1).生成器本质是迭代器,允许自定义逻辑的迭代器
(2)迭代器和生成器区别:迭代器本身是系统内置的.重写不了.而生成器是用户自定义的,可以重写迭代逻辑
(3)生成器可以用两种方式创建:(1)生成器表达式 (里面是推导式,外面用圆括号) (2)生成器函数 (用def定义,里面含有yield)

四.生成器函数
yield 类似于 return
共同点在于:执行到这句话都会把值返回出去
不同点在于:yield每次返回时,会记住上次离开时执行的位置 , 下次在调用生成器 , 会从上次执行的位置往下走. 而return直接终止函数,每次重头调用.
yield 6 和 yield(6) 2种写法都可以 yield 6 更像 return 6 的写法 推荐使用

send:可以发送数据,发送给上一个yield
next和send区别:next 只能取值;send 不但能取值,还能发送值
send注意点:第一个 send 不能给 yield 传值 默认只能写None,最后一个yield 接受不到send的发送值

无论是next 还是 send 都可以调用生成器里面的数据
send 不但可以调用,还可以给yield 发送值

注意:生成器应用在大数据的场景中,按照需求依次取值,切记不要直接迭代生成器所有数据,一旦数据量较大,类似于死循环

猜你喜欢

转载自www.cnblogs.com/cloudlzh/p/12906214.html