python 列表表达式,生成器

2016-05-06  本文已影响396人  00cadc01cbc1
列表生成式
[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()
上一篇 下一篇

猜你喜欢

热点阅读