首先我们了解一下生成器:
1.生成器是特殊的迭代器
2.迭代器需要手动记录迭代位置
3.生成器使用yield
yield的特点:
1.程序遇到yield会暂停,如果yield后面有值,返回结果之后再暂停
2.再次启动启动生成器,代码从yield之后开始执行
下面我们写个简单的生成器
def fei(num):
a = 0 # a的初始值
b = 1 # b的初始值
current_index = 0 # 列表索引初始值为0
while current_index < num: # 循环次数
a, b = b, a+b # 交换
current_index += 1
yield a # 输出第一个a的值,等待遇到next执行下一个循环
num = int(input('请输入数列长度'))
result = fei(num) # 用一个变量接收函数的值
# print(result)
i = 0
while i < num: #此循环相当于5个next,即上面函数的循环也会执行5次
print(next(result))
i += 1
运行结果
这是一个斐波那契数列,从第三位开始,后一个数字是前两个数字的和。由于我们前面是先执行的ab交换操作,所以这里从1开始打印
附一个简单的斐波那契数列程序,即便刚刚接触python也很容易看懂
list_1 = [] # 定义一个空列表,以保存产生的数值
num = int(input('请输入数列长度'))
a = 0
b = 1 # a,b的初始值
i = 0
while i < num:
list_1.append(a)
a, b = b, a+b # 交换
i += 1
print(list_1)