Python基础之迭代器

Python041

Python基础之迭代器,第1张

一.什么是迭代器

迭代器是用来迭代取值的工具。

而涉及到把多个值循环取出来的类型有:列表,字符串,元组,字段,集合,打开文件等。通过使用的遍历方式有for···in···,while等,但是,这些方式只适用于有索引的数据类型。为了解决索引取的局限性,python提供了一种 不依赖于索引的取值方式:迭代器

注意:

二.可迭代对象

迭代对象:但凡内置有__iter__方法的都称为可迭代对象

常见的可迭代对象:

1.集合数据类型,如list,tuple,dict,set,str等

2.生成器,包括生成器和带yield的生成器函数。

三.如何创建迭代器

迭代器是一个包含数个值的对象。

迭代器是可以迭代的对象,这意味着您可以遍历所有值。

从技术上讲,在Python中,迭代器是实现迭代器协议的对象,该协议由方法 __iter__() 和 __next__() 组成。

简而言之,一个类里面实现了__iter__()和__next__()这两个魔法方法,那么这个类的对象就是可迭代对象。

四.迭代器的优缺点

1.优点

2.缺点

五.迭代器示例

另外,如果类Stu继承了Iterator,那么Stu可以不用实现__iter__()方法

遍历迭代器

StopIteration

如果你有足够的 next()语句,或者在 for 循环中使用,则上面的例子将永远进行下去。

为了防止迭代永远进行,我们可以使用 StopIteration语句。

在 __next__()方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误

迭代:按照一定的顺序访问集合中的每一个元素,或者叫遍历(其他语言叫做遍历);

可迭代对象(Iterable):能被迭代的对象,或者说直接作用于for循环的对象,可以通过for..in来遍历的对象,比如数组(list)、元祖(tuple)字符串等;

迭代器(Iterator):能作用于next() 函数,并不断返回下一个值的对象称为迭代器,是惰性计算的序列(很重要)

1、判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断

2、判断一个对象是否是迭代器Iterator对象

3、可迭代对象Iterable转化为迭代器对象Iterator

4、使用迭代器迭代

1、迭代器的特性

A.惰性计算数据,节省内存

B.能记录状态,并通过next()函数执行下一个状态

C.具有可迭代性

2、集合数据类型如list、dict、str、tuple等是可迭代对象Iterable但不是迭代器Iterator,不过可以通过iter()函数转化为一个Iterator对象

原因:Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。Iterator对象表示一个无限大的数据,集合是有限集合,假如被next()到最后就是没有返回直接carsh

3、生成器(generator)一定是迭代器,他是一种特殊的迭代器;

如果想了解更多Python知识,请查看

Python的基础知识之生成器

Python的基础知识之装饰器

学无止境,学习Python的伙伴可以多多交流。

一种自动迭代的更优雅的实现是使用 for循环

在Python中,迭代器(Iterator)和可迭代(iterable)的区别是,迭代器支持 iter ()和 next ()方法;可迭代支持 iter ()方法。可迭代只能在for循环中获得元素,迭代器还可以用next()方法获取元素。

list/truple/map/dict都是可迭代,但不是迭代器;这些数据的大小是确定的;迭代器不是,迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步。

凡是可以for循环的,都是Iterable

凡是可以next()的,都是Iterator