python生成器
1.什么是生成器?
python中,边生成边计算的形式,叫做生成器。
2.为什么要使用生成器
如果我们只需要有限的数据,却将所有的数据都放入列表当中,是非常消耗内存资源的。通过生成器,即可获得海量数据,又不必占用过多资源。
3.创建生成器
a.类似于列表推导式,将“[]”换成“()”即可。
eg:
generator = (i for i in range(5))
b.一个带有yield关键字的函数就是一个生成器:
eg:
def test():
for i in range(4):
yield i
g = test()
4.调用生成器的3种方式
a.使用next(next()或者g.__next__())
b.for循环取值
c.转化为列表list() 注意这种方式会将生成器剩下所有的值一起取出来
generator = (i for i in range(5))
print(generator.__next__())
print(next(generator))
for i in generator:
print(i)
break
print(list(generator))
结果
0
1
2
[3, 4]
生成器面试题
def add(a, b):
return a+b
def test():
for i in range(4):
yield i
g = test()
for n in [1, 10]:
g = (add(n, i) for i in g)
# n = 1
# g = (add(n,i) for i in (0,1,2,3))
# n = 10
# g = (add(n,i) for i in (add(n,i) for i in (0,1,2,3)))
# 结果:[20, 21, 22, 23]

浙公网安备 33010602011771号