定义:一边循环一边计算的机制称为生成器
最大的特点:节省内存
生成器的本质是迭代器
send 关键字
send 对应一个yied
1 给上一个yield传值
2 打印yield值
最后一个yield取不到send传的值
yield from 关键字
yiekd from 他会将这个可迭代对象(列表)的每一个元素当成迭代器的每个结果进行返回
如果是yield返回的是列表整体
列表推导式 []
1 循环模式 [变量(加工后的变量)for 变量initerable]
2 筛选模式 [变量(加工后的变量)for 变量initerable if 条件]
生成器表达式 ()
生成器表达式和列表推导式的语法上一摸一样,只是把[]换成()就行了
取值通过for循环,或者用list放列表,可以直观查看到值
生成器表达式和列表推导式的区别
1 列表推导式比较耗内存,所有数据一次性加载到内存,而生成器表达式遵循迭代器协议,逐个产生元素
2 得到的值是不一样,列表推导式得到的是一个列表,生成表达式获取的是一个生成对象
3 列表推导式一目了然,生成器表达式只是一个内存地址。