列表生成式
[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()
网友评论