Python-迭代器的理解与操作

2025-05-23 05:16:18

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

1.可迭代对象

1、python中内建的可迭代的基本数倌栗受绽据类型有:字符串,列表,元组,字典,集合等。诸如这些序列类型的数据,用for...in...可以拿到其中的元素,这些就是可迭代的对象。

Python-迭代器的理解与操作

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

Python-迭代器的理解与操作

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

Python-迭代器的理解与操作

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

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

Python-迭代器的理解与操作

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

Python-迭代器的理解与操作

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

Python-迭代器的理解与操作

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

Python-迭代器的理解与操作

3.后话

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢