python中的生成器

首先我们了解一下生成器:

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值