迭代器

半世苍凉 提交于 2019-12-04 05:39:46
1,可迭代对象
   内部含有__iter__方法的对象是可迭代对象
   遵循可迭代协议
dir() 检查对象含有什么方法
        dir()会返回一个列表,这个列表中含有该对象的以字符串        的形式所有方法名。这样我们就可以判断python中的一个对        象是不是可迭代对象了
    print(dir("abc"))
判断对象是否是可迭代对象的方法
    方法一:
    print('__iter__' in dir([1, 2, 3]))   
       通过成员运算符 ,返回bool 值
    方法二
       fromcollections .abc import Iterable
       print(isinstance('123',Iterable))
isinstance 判断一个对象是什么类型,返回bool
 
迭代器
    内部含有__iter__ 且 __next__方法的就是迭代器。
    可迭代对象通过.__iter__()可以转换成迭代器,满足迭代器协    议。
     l= [1, 2, 3]
     l_obj= l.__iter__()
判断迭代器的方法:
    第一种:
       print('__next__'in dir(l_obj))
    第二种:
       fromcollections.abcimport Iterator
       print(isinstance('123',Iterator))
迭代器的取值方法
    方法一:
       print(l_obj.__next__()) 一次取一个,超出范围会报错
    方法二: for 循环
       注意:实际上可迭代对象是不可以一个一个的一次取值的,         因为他没有__next__方法。
for循环提供一个机制
       1,将可迭代对象转化成迭代器。
       2,利用__next__()进行取值。
       3,用try异常处理方法防止报错。
迭代器特点:
       1,节省内存。
             上一条在内存中会被释放
          2,满足惰性机制
              next一次,取一个值,绝不过多取值。​
            3,取值过程不可逆(一条路走到黑)。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!