美文网首页
Python篇-生成器( 一 )

Python篇-生成器( 一 )

作者: TianTianBaby223 | 来源:发表于2018-10-23 12:15 被阅读16次

    一 : 生成器简述

    可以理解为一种数据类型,这种数据类型自动实现了迭代器协议 (其他的数据类型需要调用自己的内置iter方法),所以生成器就是可迭代对象

    二 : 生成器表达形式

    ( 1 )函数方式

    def test():
        yield 1
    gen = test()
    print(gen)
    
    <generator object test at 0x10724d7c8>
    

    可以yieled多次

    def test():
        yield 1
        yield 2
        yield 3
    

    返回值生成器实现了__next__()方法

    def test():
        yield 1
        yield 2
        yield 3
    gen = test()
    print(gen.__next__())
    print(gen.__next__())
    print(gen.__next__())
    
    1
    2
    3
    

    ( 2 )三元表达式与列表解析

    • 三元表达式
    name = '思思'
    res = '可岑' if name == '思思' else '丑'
    print(res)
    
    可岑
    
    • 列表解析

    我们想在列表中填入一群美女可以下面的方法

    my_list = []
    for i in range(10):
        my_list.append('美女'+str(i))
    print(my_list)
    
    ['美女0', '美女1', '美女2', '美女3', '美女4', '美女5', '美女6', '美女7', '美女8', '美女9']
    

    变成列表解析的形式为

    l = ['美女'+str(i) for i in range(10)]
    print(l)
    

    也可以加上判断条件

    ll = ['美女'+str(i) for i in range(10) if i > 5]
    
    ['美女6', '美女7', '美女8', '美女9']
    

    ( 3 )生成式表达式

    把列表解析的[]换成()得到的就是生成器表达式

    gen =  ('美女'+str(i) for i in range(10) if i > 5)
    print(gen)
    

    调用__next__()即可

    gen =  ('美女'+str(i) for i in range(10) if i > 5)
    print(gen)
    print(gen.__next__())
    print(gen.__next__())
    
    <generator object <genexpr> at 0x100ad77c8>
    美女6
    美女7
    

    ( 4 )sum求和 生成器的方式

    print(sum(i for i in range(1000)))
    

    相关文章

      网友评论

          本文标题:Python篇-生成器( 一 )

          本文链接:https://www.haomeiwen.com/subject/yikozftx.html