9 . 推导式 ; 生成器send 与 yield from 2019-11-22

倖福魔咒の 提交于 2019-12-05 07:31:00

推导式(comprehensions)

通过一行循环判断,遍历出一系列数据的方式是推导式语法: val for val in Iterable (把想要的值写在 for的左侧)里面是一行循环判断!根据套在推导式外层的符号判断具体是什么类型的推导式​推导式种类三种:    [val for val in Iterable]  列表推导式    {val for val in Iterable}  集合推导式    {a:b for a,b in iterable}  字典推导式

列表推导式,集合推导式,字典推导式的相关写法

(1)普通推导式(2)带有判断条件的推到式(3)多循环推到式(4)带有判断条件的多循环推到式
### (1)enumerateenumerate(iterable,[start=0])功能:枚举 ; 将索引号和iterable中的值,一个一个拿出来配对组成元组放入迭代器中参数:    iterable: 可迭代性数据 (常用:迭代器,容器类型数据,可迭代对象range)     start:  可以选择开始的索引号(默认从0开始索引)返回值:迭代器
### (2)zipzip(iterable, ... ...)    功能: 将多个iterable中的值,一个一个拿出来配对组成元组放入迭代器中    iterable: 可迭代性数据 (常用:迭代器,容器类型数据,可迭代对象range) 返回: 迭代器多出来无人配对的元素,会自动的舍掉;

元组推导式是生成器(generator)

#生成器本质是迭代器,允许自定义逻辑的迭代器​#迭代器和生成器区别:    迭代器本身是系统内置的.重写不了.而生成器是用户自定义的,可以重写迭代逻辑​#生成器可以用两种方式创建:    (1)生成器表达式  (里面是推导式,外面用圆括号)    (2)生成器函数    (用def定义,里面含有yield)
# yield 类似于 return共同点在于:执行到这句话都会把值返回出去不同点在于:yield每次返回时,会记住上次离开时执行的位置 , 下次在调用生成器 , 会从上次执行的位置往下走           而return直接终止函数,每次重头调用.yield 6 和 yield(6) 2种写法都可以 yield 6 更像 return 6 的写法 推荐使用

生成器send 与 yield from

### send# next和send区别:    next 只能取值    send 不但能取值,还能发送值# send注意点:    第一个 send 不能给 yield 传值 默认只能写None    最后一个yield 接受不到send的发送值    ### yield from : 将一个可迭代对象变成一个迭代器返回
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!