Python高阶--推导式、生成器的基本使用和区别
推导式是可以从一个数据序列构建另一个新的数据序列,是Python的一种独有特性
1、列表推导式
列表推导式是指循环创建列表
for循环可以用来创建一个列表,而列表推导式就是for循环创建列表的简化版

语法:
--- 变量名 = [表达式 for 变量 in 列表 for 变量 in 列表]
--- 变量名 = [表达式 for 变量 in 列表 if 条件]
2、字典推导式
字典推导式就是推导出两个值并构建成键值对的样子

3、集合推导式
集合推导式就是将列表推导式的中括号[]变成{}
4、生成器
生成器的数据是取一个生成一个,使用next()取数据,即什么时候调数据才取值,但取完数据会报错;作用:节约内存,提高性能;
第一种语法: 推导式的最外层符文从{}、【】变为()即为生成器表达式,

第二种语法:通过yield关键字自定义生成器

5、迭代器
迭代协议:只要对象种了包含iter()或者是包含getitem()就可以进行迭代操作,即实现了迭代协议
迭代器协议:
1、实现了迭代器协议的对象(实现方式:对象内部定义了iter()方法)
2、对象实现了__next__()
3、__next__()返回了某个值(一般情况下,返回这个对象的特定数据,并按照一定的顺便依次返回)
4、__next__()需要在值取完成的时候,抛出StopInteration的错误信息
可迭代对象:只要内部实现了迭代协议的就是一个可迭代对象(可以进行相关的迭代操作,比如for循环,map函数等等),所有的迭代器都是可迭代对象,可迭代对象不一定是迭代器,如一个 list 是可迭代对象,使用 iter(list)后是迭代器

生成器和迭代器的区别
生成器属于迭代器的一种,生成器比迭代器多了三种方法:send()、close()、throw(Exception," Method throw called!")

浙公网安备 33010602011771号