Python迭代器

Python-迭代器和可迭代对象

2018-05-05  本文已影响3人  张氏小毛驴

可迭代对象(iterable)


​ 在之前学过的容器中,许多容器都是可迭代对象,可以直接用于for...in...循环的而对象都是可迭代对象,比如:list,tuple,dict,set,str等等。

可迭代对象满足条件:实现了__iter__方法

可迭代对象并不是一种具体的数据类型,比如list是可迭代对象,dict也是可迭代对象。

如何判断一个对象是否是可迭代对象? 使用isinstance()函数

from collections import Iterable 

isinstance("123",Iterable) #字符串是不是可迭代对象 返回True
isinstance(1,Iterable) #数字是不是可迭代对象  返回False

迭代器(iterator)


​ 迭代器是一种带有状态的对象,能够调用next()获取容器的下一个值,但如果调用了next方法,容器没有值可以返回,则会抛出一个StopIteration异常。

迭代器满足的条件:实现__iter__()方法和__next()__方法

迭代器的特点:

​ 1. 获取较多的值得时候(比如一百万个数据),比起使用列表等容器存储,更加省内存。因为迭代器有next方法,不会一次性把所有数据生成,而是一个接一个的计算,当你想要下一个值得时候才给你返回。

两者的关联


结论:

  1. 可迭代对象是包含迭代器的(迭代器一定是可迭代对象,反之却不一定)
  2. 如果一个对象定义了__iter()__方法,那它就是可迭代对象。
  3. 如果一个对象定义了__iter()__方法和__next()__方法,那它就是迭代器。(因为迭代器是可迭代对象,所以一定有__iter()__)

操作:

上一篇 下一篇

猜你喜欢

热点阅读