python 迭代器,生成器

本文介绍了Python中迭代器和生成器的概念及使用方法。详细解释了可迭代对象与迭代器的区别,演示了如何通过copy模块复制迭代器状态。此外还深入探讨了生成器的工作原理,包括生成器函数的特点及其与普通函数的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么事迭代

    可直接用作与for循环的对象统称为可迭代对象;可以被next()函数调用,并不断返回下一个值的对象称为迭代器,
所有的Iterable均可以通过内置函数iter()来转变为Iterator。 
    对于迭代器来讲,有一个next()就够了。在你使用forin语句时,程序就会自动调用即将被处理的对象的可迭代对象,然后使用next()方法。

**复制迭代器**

我们需要使用copy中的deepcopy

例:
    >>> import copy
    >>> I=iter(L)
    >>> J=copy.deepcopy(I)
    >>> next(I)
    1
    >>> next(I)
    2
    >>> next(J)
    1
    ```


**生成器**
生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束。
生成器函数: 在函数中如果出现了yield关键字,那么该函数就不再是普通函数,而是生成器函数。
    但是生成器函数可以生产一个无线的序列,这样列表根本没有办法进行处理。

    yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator。

**yieldreturn**:
在一个生成器中,如果没有return,则默认执行到函数完毕时返回StopIteration;
如果遇到return,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。

**总结**

生成器就是一种迭代器,可以使用for循环进行迭代
“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值