您的位置:首页 > 编程语言 > Python开发

python 迭代器,生成器

2017-08-22 08:03 239 查看
什么事迭代

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


**yield 与 return**:


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


**总结**:


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

“`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 迭代器 迭代