• 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条件) 集合特点:无序,不重复,所以集合推导式自带去重功能
    没有元祖推导式

  • 相关阅读:
    1051 高度检查器
    Word+Excel 问题及解决
    Python——面向对象、绑定对象、组合
    Python——异常处理
    Python——包
    Python——模块
    Python——序列化模块
    Python——collections模块、time模块、random模块、os模块、sys模块
    Python——re模块
    Python——递归、二分查找算法
  • 原文地址:https://www.cnblogs.com/guyannanfei/p/10103458.html
Copyright © 2020-2023  润新知