• 学习日记0804生成器


    大前提:生成器就是一种自定义的迭代器,它的本质就是一种迭代器

    但凡函数体内包含一个yield关键字的,调用函数不会执行函数体代码,会得到一个返回值,该返回值就是一个生成器对象

    # def func():
    # print('first')
    # yield 1
    # print('second')
    # yield 2
    # print('third')
    # yield 3
    # print('fourth')
    #
    # g=func() 注意:此时函数体代码不执行,此时g就是一个迭代器
    # print(g)
    # print(g.__iter__().__iter__() is g)
    #res1=next(g) 此时函数体代码执行,当遇到一个yield时函数会停止,res1会得到一个yield后的返回值
    强调:针对表达式形式的yield的使用,第一步必须让函数先暂停到一个yield的位置,才能进行传值操作
    总结:
    1 生成器提供了一种自定义的迭代器的表达方式
    2 yield可以保存函数的运行状态
    3 yield 相比于 return:
      相同点:都可以返回值,返回值的类型和个数没有限制
      不同点:yield可以返回多个值,而return只能放回一个值函数就结束了
    生成器表达式:
    g = (i**2(返回值) for i in range(12) if i>3)
    内置函数:
      abs 取绝对值
      all(多个值) 其中的值全为真则返回真,否则返回假
      any(多个值) 其中的值有一个值为真则返回真
      bool() 只有里面的值为真返回真,为假则返回假
      encode() 将二进制编码
      decode() 将二进制解码
      type() 返回里面数据的类型
      callable() 判断是否为内置函数
      chr() 在ascll编码表中查找对应的字符
      ord() 在ascll编码表中查找字符对应的编码
      import 导入模块的操作
      divmod(x,y) 会返回两个值(取整,取余)
      enumerate() 会依次得到索引和值
      eval() 会将字符中的列表转换成列表
      set() 取出元组中的集合
      slice() 按照索引取值的一种方式
      zip() 将一个字符串与一个列表中的元素拼接
      


  • 相关阅读:
    [HNOI2007]最小矩形覆盖
    Java实现第十届蓝桥杯质数
    Redo current损坏
    [学习笔记]计算几何
    delete noprompt archivelog 报错ORA-00245,RMAN-08132
    [学习笔记]CDQ分治
    Java实现第九届蓝桥杯耐摔指数
    RAC RMAN 备份 RMAN-03009 ORA-19504 ORA-27040 RMAN-06012 channel c3 not allocated 错误分析
    [学习笔记]树套树
    RMAN-03002、RMAN-06059
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9439373.html
Copyright © 2020-2023  润新知