python中构建生成器有两种方式。
生成器的特点:1、只能迭代一次 2、实时生成数据,占用内存小 3、只能通过for迭代,不能直接打印
# 1、 直接构造生成器
f = (x ** 2 for x in range(1, 100) if x % 2 == 0)
print(f) # <generator object <genexpr> at 0x0062F270>: 代表f是一个生成器对象,不能直接打印
for val in f:
print(val,end=' ') # 4 16 36 64 100 144 196 256 324 400 484 576 676 784 900 1024 1156 1296 1444 1600 1764 1936....
# 2、利用yield函数构造生成器
def generator(num=20):
for x in range(num):
yield x * 2
print(generator()) # <generator object generator at 0x004EF9F0>
for val in generator(20):
print(val,end=' ') # 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38