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

  • 相关阅读:
    POJ2778 DNA Sequence AC自动机上dp
    codeforces732F Tourist Reform 边双联通分量
    codeforces786B Legacy 线段树优化建图
    洛谷P3588 PUS 线段树优化建图
    codeforces1301D Time to Run 模拟
    codeforces1303B National Project 二分或直接计算
    codeforces1303C Perfect Keyboard 模拟或判断欧拉路
    codeforces1303D Fill The Bag 二进制应用+贪心
    python之路——使用python操作mysql数据库
    python之路——mysql索引原理
  • 原文地址:https://www.cnblogs.com/guyannanfei/p/10103458.html
Copyright © 2020-2023  润新知