• day16迭代器


    1、可迭代对象

      内部含有__iter__方法的对象是可迭代对象

      遵循可迭代协议

    der() 检查对象含有什么方法

      dir()会返回一个列表,这个列表含有该对象的以字符串的形式所有方法名。这样我们就可以判断python中的一个对象是不是可迭代对象了

      print(dir("abc"))

    判断对象是否是可迭代对象的方法

    方法一:

      print("__iter__" in dir([1,2,3]))

      通过成员运算符,返回bool值

    方法二:

      fromcollections.abc import  Iterable

      print(isinstance("123",Iterable))

    isinstance 叛断一个对象是什么类型,返回bool

    1、迭代器

      内部含有__inter__且__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,取值过程不可逆(一条路走到黑)。
  • 相关阅读:
    B. Random Teams(Codeforces Round 273)
    Unity3d中的属性(Attributes)整理
    Python 的 Flask 框架安装应用
    动态SQL(章节摘要)
    Linux系统PWM驱动【转】
    嵌入式电路中的BUCK VS LDO【转】
    git用法-打补丁【转】
    展讯7731C_M Android6.0 充电指示灯实现(一)------关机充电实现【转】
    Android 充电信息的获取【转】
    2.Android硬件访问服务编写系统代码【转】
  • 原文地址:https://www.cnblogs.com/Darry-Ring/p/11865235.html
Copyright © 2020-2023  润新知