• 迭代器是什么鬼?


    1. 那些数据类型支持迭代 

    # 	srt,list,tuple,dict,set,句柄,range
    

      

    2. 迭代器本质

    # lst = ['皇阿玛','皇额娘','容嬷嬷','紫薇']
    # it = lst.__iter__()     # lst的迭代器
    # while 1:
    # 	try:
    # 		name = it.__next__()    # 循环拿下一个值
    # 		print(name)
    # 	except StopIteration:
    # 		break
    

     

    3. 如何判断一个对象是否支持迭代

    # 方法一
    # lst = [1,2,3,4,5]
    # print(dir(lst))
    # 结果:
    # ['__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']
    
    # 这里面是列表支持的所有功能,其中"__iter__"就表示支持迭代
    

     # 方法二

    st = [1,2,3,4,5]
    it = lst.__iter__()     # "it"就是列表"lst"的迭代器
    from collections import Iterable
    from collections import Iterator
    print(isinstance(lst,Iterable))     # 判断这个对象是否可迭代
    # 结果:True
    print(isinstance(lst,Iterator))      # 判断这个对象是不是一个迭代器
    # 结果:False
    
    print(isinstance(it,Iterable))
    # 结果:True
    print(isinstance(it,Iterator))
    # 结果:True
    
    print(dir(it))
    ### 从上面的判断可以看出,支持迭代的对象不一定是迭代器,迭代器一定支持迭代
    

      

    4.迭代器的总结

    #  Iterable:可迭代对象,内部包含"__iter__()"函数
    # Iterator:迭代器,内部包含"__iter__()"和"__next__()"
    # 特点:
    # 1.节省内存
    # 2.惰性机制
    # 3.不能反复,本次迭代只能往下进行,不能回退或跳过
  • 相关阅读:
    leetcode(26)删除数组中的重复元素
    Jboss
    oracle中在一张表中新增字段和字段说明以及查看oracle的版本
    eclipse中大小写转换快捷方式
    js声明全局变量的方式
    jQuery中遍历数组的一种方法$.inArray()
    Python运算符优先级表格
    jquery判断表单值是否改变
    json.stringify()的妙用,json.stringify()与json.parse()的区别
    jQuery重置form表单方式
  • 原文地址:https://www.cnblogs.com/594504110python/p/9326179.html
Copyright © 2020-2023  润新知