三十五、python高级特性--生成器

三十五、python高级特性–生成器

35.1 生成式

  • 生成式:用来快速生成某个数据类型的式子。
  • 列表生成式:是一个用来生成列表的特定语法形式的表达式[ ]
  • 字典生成式:用来快速生成字典{ }
  • 集合生成式:用来快速生成集合{ }

35.1.1 列表生成式

  • 列表生成式:列表生成式就是一个用来生成列表的特定语法形式的表达式。是Python提供的一种生成列表的简洁形式, 可快速生成一个新的list。[ ]

    • 普通的语法格式:[exp for iter_var in iterable]
    • 带过滤功能语法格式: [exp for iter_var in iterable if_exp]
    • 循环嵌套语法格式: [exp for iter_var_A in iterable_A for iter_var_B in iterable_B]
  • 练习

    • 普通语法格式:
    • e:x=1…10 求y=3x+12,将求出的所有y值存储到列表中
      • 方法一
        1
        2

      • 方法二
        3

    • 带过滤功能语法格式
      • e:x=2,4,…,8,求y=3x+12 ,并将求出的所有y值存储到列表中
        5
        4

35.1.2 集合生成式

  • 集合生成式:集合生成式就是一个用来生成集合的特定语法形式的表达式。是Python提供的一种生成集合的简洁形式, 可快速生成一个新的集合。{ }
  • 练习
    • e: x=1…10,求x的平方
      6
      7

35.1.3 字典生成式

使用符号:{ }
格式:key:value
练习:
e: x=1…10,求x的平方
8
9

35.2 生成器

35.2.1 生成器的介绍

  • 什么是生成器
    • 在Python中,一边循环一边计算的机制,称为生成器:Generator。
  • 什么时候要用到生成器:
    • 性能限制需要用到,比如读取一个10G的文件,如果一次性将10G的文件加载到内存处理的话 (read方法),内存肯定会溢出;但使用生成器把读写交叉处理进行,比如使用(readline和readlines) 就可以再循环读取的同时不断处理,这样就可以节省大量的内存空间.

35.2.2 创建生成器

  • 首先将列表生成式改写:【】改写为( )

10
11

  • yield关键字(停靠,让步)

    • 如果函数中包含yield关键字,调用函数的返回值是生成器,这个时候函数并没有执行。
    • 通过调用next函数才开始执行函数的内容,遇到yield就停止执行。
    • 当再次调用next方法时,从上次停止的地方继续执行,知道遇到yield关键字停止。
    • 函数中遇到yield关键字,函数执行停止,直到调用下一个next函数,从停止的地方继续执行
    • 函数中遇到return,函数执行结束,后边的代码不会继续执行。
      • yield(停靠 让步)
      • 如果函数中包含yield关键字,调用函数的返回值是生成器,这个时候函数没有执行。
      • 通过调用next关键字才开始执行函数的内容,遇到yield就停止执行。
      • 当再次调用next方法时,从上次停止的地方继续执行,直到在遇到yield关键字停止。
      • 第一次执行
        12
        17
      • 第二次执行
        13
        17
      • 第三次执行
        14
        15
  • 练习2
    18
    在19

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值