一、生成器介绍
通过列表生成式(推导式),我们可以创建一个列表。但是,受到内存限制,列表容量是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅访问前面的几个元素,那后面的元素占用空间都浪费了。所以,如果列表元素可以按照某种算法推算出来,就不必创建完整的list,从而大量节省空间。在python中,这种一边循环一边计算的机制,称为生成器。
二、得到生成器方式
1、通过列表推导式得到生成器
newlist = [x*3 for x in range(10)]
print(newlist)
# 得到生成器
g = (x*3 for x in range(20))
print(g)
# 调用生成器
# 方式一
print(g.__next__())
# 方式二 next()
print(next(g))
三、用函数得到一个生成器
步骤:
1、定义一个函数,函数中使用关键字yield
2、调用函数,接受调用的结果
# 定义生成器的方式:借助函数完成
# 只要函数中出现了yield关键字,说明函数不是函数,变成生成器了
def func():
n = 0
while True:
n += 1
# print(n)
# yield相当于暂停
yield n
g = func()
print(g.__next__())
四、菲波那切数列
# 斐波那契数列
def fib(length):
a,b = 0,1
n = 0
while n