python 进阶 - 迭代器和生成器
引言
迭代器是一种数据遍历的方式,是许多编程语言的一个重要功能; python
中也有, 而生成器应该是python
独有的特性。
我们开始认识一下这两个功能特性吧
什么是迭代器
python
中的迭代器是访问集合的一种方式,每次访问记住遍历的位置。
迭代器通过
iter()
将一个可迭代对象变成迭代器,例如list
tuple
dict
set
str
等,还有就是后面讲到的生成器(generator)
都是可迭代对象通过
next()
或者for
循环访问迭代的数据
我们来看下例子
复制代码
使用迭代器
复制代码
自定义一个迭代器: 通过实现__iter__
和__next__
来实现迭代器的功能; 其实python
很多的对象都实现的迭代器的功能, 都可以通过 for 循环的方式来访问,比如文件访问。
复制代码
复制代码
tensorflow 中的迭代器
tf.data 也是通过迭代器的方式来生成数据的,如下
复制代码
什么是生成器
上面说过生成器的结果是产生一个可以迭代的对象,可以通过for
循环来访问。
那它和其他的可迭代对象有什么不同呢?
生成器的特性:
它是一个延迟的可迭代对象,也就是说它不是一次性生成所有的迭代的内容(如列表中的所有元素),而是需要的时候才生成结果即:一边循环一边生成计算
好处是:不用一次性存储所有的内容,节省内存。这个对于访问大量数据的时候是十分有帮助的
我们来看看上面的这些特性
(1)通过 yield 来构造一个生成器
复制代码
结语
本实验和大家简单描述了python
迭代器和生成器的使用,希望对大家有帮助。
版权声明: 本文为 InfoQ 作者【AIWeker-人工智能微客】的原创文章。
原文链接:【http://xie.infoq.cn/article/4f65f2bca504e98abf8553940】。文章转载请联系作者。
评论