迭代器和生成器
最简单实现的一个迭代器.
|
|
output12345678python iter_and_generate.py123Traceback (most recent call last): File "iter_and_generate.py", line 10, in <module> print next(it)StopIteration
自定义迭代器
只需要一个具有next
方法的类,只要能够提供返回迭代器实例的__iter__
特殊方法
|
|
itertools模块中好玩的迭代器
islice:窗口迭代器
|
|
tee:往返式的迭代器
|
|
groupby:uniq迭代器
使用行程长度编码(RLF)来压缩数据1234567from itertools import groupbydef compress(data): reutrn ((len(list(group)), name) \ for name, group in groupby(data)def decompress(data): return (car * size for size, car in data)
生成器
使得函数需要返回一系列元素的函数变得更加简单,高效.
Ex
|
|
在处理大的文件的时候,这种方式比较节省内存
关于yield,以及yeild更多姿势
|
|
send()
的工作机制和next()
一样。但是yield将变成能够返回传入的值。
在python3.x中,yield有更多的用法。