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!")

  

 

posted @ 2022-01-14 17:41  哩子吖  阅读(167)  评论(0)    收藏  举报