多语言展示
当前在线:1905今日阅读:167今日分享:16

Python-迭代器的理解与操作

可迭代对象遍历的台前幕后,以及相关函数iter(),next()的使用。
1.可迭代对象
2

但这些数据是怎么拿到的?获取这些数据在幕后发生,台前是看不出来的:首先迭代对象通过一个特殊方法__iter__(),返回一个迭代器(iterator):

3

然后迭代器对象调用特殊方法__next__(),执行循环的时候迭代器每调用一次此方法返回序列的一个元素,直到调用完所有元素。这些步骤在python内部自动完成。

2.iter(),next()函数。
1

上面的迭代对象的幕后机制使得能自动遍历一个序列内的所有元素,而不需要我们在台前调用__iter__()和__next__()方法。如果要想在台前手动实现也是可以的。这要用到内建的两个公用函数iter(),next()。iter(obj)函数:返回一个生成器对象。就相当于幕后操作obj.__iter__()参数obj是一个可迭代的对象,

2

用函数iter(obj),返回的生成器对象,仍然可以用for in循环遍历,此时幕后同样用__next__()方法来每次获取元素实现遍历。

3

生成器对象也可手动用__next__(),每次获取元素。

4

next(iterator[, default])函数,返回迭代器对象的一个元素,如果元素取完,则返回default,如果没有默认参数则引发 StopIteration。

3.后话

1)要区分,可迭代对象和迭代器。2)特殊方法一般用在定义类中,所以在用到iter,和next时应使用iter(),next()函数。

推荐信息