Python基础12_生成器,列表推导式,生成器表达式

一. 生成器 genetator
一种一边循环一边计算的机制
三种方式获得生成器:
(1)通过生成器函数
(2)通过各种推导式来实现生成器
(3)通过数据的转换也可以获取生成器
函数中存在yield,这个函数就是生成器函数,再执行这个函数的时候就不再是函数的执行了,而是获得这个生成器,yield是分段执行一个函数,return是直接停止执行函数,当程序运行完最后一个yield,再继续执行__next__()程序会报错
send()和__next__()一样都可以让程序执行到下一个yield,区别在于:
send()可以给上一个yield的位置传递值,不能给最后一个yield发送值,在第一次执行生成器代码时不能使用send()
所有的生成器都是迭代器都可以直接使用for循环, 都可以使用list()函数来获取到生成器内所有的数据
yield from 可以把一个可迭代对象分别进行yield返回
二. 列表推导式.生成器表达式以及其他推导式
列表推导式语法 [结果 for循环 if条件]
生成器表达式和列表推导式的语法基本上是一致的,只是把[]替换成()
生成器表达式 (结果 for循环 if条件)
生成器表达式和列表推导式的区别:
(1)列表推导式比较耗内存,一次性加载,生成器表达式几乎不占内存,使用的时候才分配和使用内存
(2)得到的值不一样,列表推导式得到的是一个列表,生成器表达式获取的是一个生成器
生成器的惰性机制: 生成器只有在访问的时候才取值
字典推导式 {key: value for循环 if条件}
集合推导式 (key for循环 if条件) 集合特点:无序,不重复,所以集合推导式自带去重功能
没有元祖推导式

原文地址:https://www.cnblogs.com/guyannanfei/p/10103458.html