python的生成器解释

本文介绍了Python中的生成器,一种节省内存的迭代机制。生成器允许在循环过程中按需计算元素,避免了存储大量数据时的内存浪费。通过将列表生成器的[]改为()即可创建生成器。生成器的关键在于next()方法,它通过反复调用来获取元素。yield关键字使得函数变为生成器,可以在迭代时返回值并记住返回位置。send()方法类似next(),但能传递值并修改上一个yield表达式的结果。举例展示了如何使用生成器及send()方法进行交互。
摘要由CSDN通过智能技术生成

1.生成器的定义

    在python中,一边循环一边计算的机制,称为生成器:generator

2.为什么要有生成器

    列表所有数据都在内存中,如果有海量数据的话将会非常耗内存。如仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。如果列表元素按照某种算法推算出来,那我们就可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。简单一句话:想要的到庞大的数据,又想让它占用空间少,那就用生成器

3.生成器的创建

    a.只需要将列表生成器的[]改成()就创建了一个generator

a = [x for x in range(10)]
b = (x for x in range(10))
print("a的类型为:",type(a))
print("b的类型为:",type(b))
#generator的调用方式
#第一种方式
print(b.__next__())
#第二种方式
print(next(b))

 b.一个函数中包含yield关键字,那么这个函数就不再是一个普通的函数,而是一个generator。调用函数就是创建了一个生成器对象
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        a, b = b, a + b
        n = n + 1
        print(a)
    return 'done'


a = fib(10)
print(fib(10))

4.生成器的工作原理

    a.生成器能够迭代的关键是它有一个next()方法,工作原理就是通过重复调用next()方法,直到捕获一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tianjingweixiaoyang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值