• python生成器


    生成器
    可以视作一种数据类型,这种数据自动实现了迭代器协议(其他数据类型需要去调用自己的内置函数__iter__()生成可迭代对象),视为可迭代对象
    生成器的表现形式:
    1)生成器函数:常规函数定义,但是使用yield语句而不是return语句2
    2)生成器表达式:类似于列表推导,但是,生成器
    三元表达式

    示例
     1 # eg.1
     2 def test():
     3     yield 1
     4     yield 2
     5     yield 3
     6 
     7 
     8 # eg.2 三元表达式
     9 name = "alex"
    10 res = "SB" if name == "alex" else "linda"
    11 
    12 # eg.3  列表解析
    13 egg_list = ["第%s号蛋" % i for i in range(10)]
    14 print(egg_list)
    15 egg_list1 = ["第%s号蛋" % i for i in range(10) if i > 5]
    16 print(egg_list1)
    17 # egg_list1 = ["第%s号蛋" %i for i in range(10) if i > 5 else i] 没有四元表达式
    18 
    19 # eg.4
    20 hen = ("第%s号蛋" % i for i in range(10))
    21 print(hen)
    22 print(hen.__next__())
    23 print(hen.__next__())
    24 
    25 # eg. 5
    26 li = [1, 2, 3, 4, 5]
    27 print(sum(li))  # sum也基于iterable协议计算
    28 print(sum(i for i in range(1000)))  # 生成器表达式
    29 
    30 
    31 # eg.6 生成器函数
    32 def generator_test():
    33     for i in range(100):
    34         yield i
    35 
    36 
    37 res = generator_test()
    38 print(res)
    39 print(res.__next__())
    40 print(res.__next__())
     
  • 相关阅读:
    类的定义
    面向对象与面向过程介绍
    跨目录导入模块
    正则表达式re模块
    常用工具包(模块)
    生成器generator
    闭包
    命名空间name space
    函数的递归
    POJ1062
  • 原文地址:https://www.cnblogs.com/latencytime/p/15685148.html
Copyright © 2020-2023  润新知