首先,先看一个方法:dir(数据类型)这个方法可以查看指定数据类型下所有的方法,比如dir([])就表示返回列表的所有方法。 当用上述方法查看某个数据类型拥有的方法时,会发现有很多的带双下划线的方法,我们把这些方法叫作双下方法,一般这类方法不直接调用。
1、首先,用dir(数据类型)方法查看该类型有没有__iter__()方法,如果有,就是可迭代的,如果没有,就不是,也就是说该方法类似于可迭代协议;而如果某个数据类型同时含有__next__()和__iter__()两个方法,则其就是迭代器。 2、除此之外,也可以用isinstance()方法进行判断,具体如下:
判断一个数据类型是否为可迭代的isintance(数据类型,Iterable)判断一个数据是否是迭代器isintance(数据类型,Iterator) 实例: 判断列表是否为可迭代的和迭代器(运行版本为python3.7) from collections import Iterable from collections import Iterator print(isinstance([],Iterator)) print(isinstance([],Iterable))1、从容器类型中一个一个的取值,会把所有的值都取到 2、节省内存空间
迭代器并不会在内存中再占用一大块内存,而是每次调用next方法,生成相应数据,并不会直接生成所有的数据,而是每次生成一个;每次调用__next__()方法生成一个迭代器的生成非常简单,对于有__iter__()的方法,直接调用此方法就可以返回一个迭代器,然后就可以使用了。 基本语法: 可迭代变量名.__inter__() 实例:
lis = [1,2,3,4,54,5] ret = lis.__iter__() #返回一个迭代器给ret ret.__next__() #通过__next__()方法取值,第二次调用就取第二个值。