python 迭代器
迭代器(Iterator)
这里的迭代可以指for循环,在Python中,对于像list,dict和文件等而言,都可以使用for循环,但是它们并不是迭代器,它们属于可迭代对象。
什么可迭代对象
最简单的解释:可以使用for...in...语句进行循环的对象,就是可迭代对象(Iterable),可以使用isinstance()方法进行判断。
from collections import Iterable
type = isinstance('python', Iterable)
print type
什么是迭代器
迭代器指的是可以使用next()方法来回调的对象,可以对可迭代对象使用iter()方法,将其转换为迭代器。
temp = iter([1, 2, 3])
print type(temp)
print next(temp)
此时temp就是一个迭代器。所以说,迭代器基于两个方法:
- next:返回下一个项目
- iter 返回迭代器本身
可理解为可被next()函数调用并不断返回下一个值的对象就是迭代器,在定义一个装饰器时将需要同时定义这两个方法。
迭代器的优势
在构建迭代器时,不是将所有的元素一次性的加载,而是等调用next方法时返回元素,所以不需要考虑内存的问题。
迭代器应用场景
那么,具体在什么场景下可以使用迭代器呢?
- 数列的数据规模巨大
- 数列有规律,但是不能使用列表推导式描述。