zoukankan      html  css  js  c++  java
  • python函数之可迭代对象、迭代器的判断

    怎么判断一个对象是可迭代对象还是迭代器

    例子

    from collections import Iterable, Iterator
    lst = ['Today is Wednesday', 'Tomorrow is Thursday', 'The day after tomorrow is Friday']
    it = lst.__iter__()
    

    方案一

    使用dir()函数查看对象的属性列表,如果只有__iter__()函数则是可迭代的,如果__iter__()__next__()函数都有则是迭代器。

     一个数据类型中包含了__iter__函数表示这个数据是可迭代的
    dir(数据): 返回这个数据可以执行的所有操作
     
    判断迭代器和可迭代对象的方案(野路子)
     __iter__            可迭代的
    __iter__  __next__  迭代器
     
    print(dir(lst))
    print(dir(it))
    
    

    [__add__, __class__, __contains__, __delattr__, __delitem__, __dir__, __doc__, __eq__, __format__,
    __ge__, __getattribute__, __getitem__, __gt__, __hash__, __iadd__, __imul__, __init__,
    __init_subclass__, __ iter __ , __le__, __len__, __lt__, __mul__, __ne__, __new__, __reduce__,
    __reduce_ex__, __repr__, __reversed__, __rmul__, __setattr__, __setitem__, __sizeof__, __str__,
    __subclasshook__, append, clear, copy, count, extend, index, insert, pop, remove, reverse,
    sort]

    [__class__, __delattr__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __gt__,
    __hash__, __init__, __init_subclass__, __ iter __ , __le__, __length_hint__, __lt__, __ne__, __new__,
    __ next __ , __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__,
    __subclasshook__]

    方案二

    使用isinstance() 函数来判断一个对象是否是一个已知的类型

    判断迭代器和可迭代对象的方案(官方)
    from collections import Iterable, Iterator
    isinstance(对象, Iterable) 是否是可迭代的
    isinstance(对象, Iterator) 是否是迭代器
    
    print(isinstance(lst, Iterable))  # 
    print(isinstance(it, Iterator))  #
    

    True

    True

  • 相关阅读:
    nuxt项目打包上线,以及nuxt项目基础代码分享
    SVG学习之stroke-dasharray 和 stroke-dashoffset 详解
    从零开始使用mocha测试
    小程序开发,视频播放和下载
    小程序开发中遇到的坑
    记录一次面试中的HTTP请求相关问题
    css3 min-content,max-content,fit-content, fill属性
    GC的 算法和种类
    JVM 的运行机制
    各种同步控制工具的使用
  • 原文地址:https://www.cnblogs.com/lcfzh/p/10110079.html
Copyright © 2011-2022 走看看