在python中,很多对象都是可以通过for语句来直接遍历的,例如list、string、dict等等,这些对象都可以被称为可迭代对象。
概念
所谓的迭代器就是具有next方法(这个方法在调用时不需要任何参数)的对象。在调用next方法时,迭代器会返回它的下一个值。如果next方法被调用时,但迭代器没有值可以返回,就会发生一个StopIteration异常。
_iter_()和next()方法
这两个方法是迭代器最基本的方法,一个用来获得迭代器对象,一个用来获取容器中的下一个元素。可以这么说,一个实现了iter方法的对象是可迭代的,一个实现了next方法的对象则是迭代器。
例子
对于可迭代对象,可以使用内建函数iter()来获取它的迭代器对象。
li = [1, 2]
it = iter(li)
print it
print it.next()
print it.next()
print it.next()
执行结果
例子中,通过iter()方法获得了list的迭代器对象,然后就可以通过next()方法来访问list中的元素了。当容器中没有可访问的元素后,next()方法将会抛出一个StopIteration异常终止迭代器。
其实,当我们使用for语句的时候,for语句就会自动的通过iter()方法来获得迭代器对象,并且通过next()方法来获取下一个元素。