zoukankan      html  css  js  c++  java
  • python迭代器

    迭代器

    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,取值过程不可逆(一条路走到黑)。
     
     
     
     
  • 相关阅读:
    查找 Linux 父进程的方法
    Flask 使用日志
    Jenkins Pipeline 编译后端 Java 代码
    K8S 指定 nfs 挂载
    K8S ingress nginx 设置访问白名单
    Jenkins Pipeline 编译前端 NodeJS 代码
    在 K8S 中测试环境中搭建 mongodb
    K8S argocd 安装配置
    搭建私有 helm 仓库 chartmuseum
    Helm templates 中的语法
  • 原文地址:https://www.cnblogs.com/zuohangyu123/p/11854605.html
Copyright © 2011-2022 走看看