美文网首页
python 列表表达式,生成器

python 列表表达式,生成器

作者: 00cadc01cbc1 | 来源:发表于2016-05-06 11:10 被阅读396次
    列表生成式
    [x for x in range(0, 11)]
    [x * x for x in range(0, 11)]
    [x * x for x in range(0, 11) if x % 2 == 0 ]
    #两层循环
    [m + n for m in 'ABC' for n in 'abc']
    
    #输出当前目录下的 所有文件名
    import os
    [d for d in os.listdir('.') ]
    #输出字典的键值
    d = {'x': 'A', 'y': 'B', 'z': 'C' }
    [k + '=' +  v for k, v in d.iteritems()]
    
    #把过滤字符并小写
    L = ['Hello', 'World', 'IBM', 'Apple', 22]
    [x.lower() for x in L if isinstance(x, unicode)]
    
    生成器

    生成器可以节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

    #把列表生成式的[] 该成()就可以创建一个生成器
    (x for x in range(0, 11))
    
    #使用yield生成生成器
    def fb(max):
      n, a, b = 0, 0, 1
      while n < max:
        yield b 
        a, b  = b, a + b
        n = n + 1
    generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
    
    def odd():
      print 'step1'
      yield
      print 'step2'
      yield
      print 'step3'
      yield
    n = odd()
    n.next()
    n.next()
    n.next()
    n.next()
    

    相关文章

      网友评论

          本文标题:python 列表表达式,生成器

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