美文网首页
python之迭代器

python之迭代器

作者: Joening | 来源:发表于2021-08-31 11:03 被阅读0次

    迭代器的特点:

    1.只能向前
    2.几乎不占用内存
    3.惰性机制

    s = 'abc'
    print(dir(s)) #可以查看xx类型可以执行那些方法 iter
    所有带iter可以使用for循环, 可迭代对象
    可迭代对象可以用过iter()来获取迭代器
    迭代器里有next

    s = '123'
    it = s.__iter__(); #获取迭代器
    # print(dir(it)) #迭代器里有__iter__ 有 __next__
    #['__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__']
    print(it.__next__()) #1
    print(it.__next__()) #2
    print(it.__next__()) #3
    

    迭代器模拟for循环

    lst = ['qiaoning','wangtao','linux','python']
    for el in lst: #获取迭代器 
        print(el)
    

    剖析for循环原理

    lst = ['qiaoning','wangtao','linux','python']   
    lt = lst.__iter__()
    while 1:
        try:
            el = lt.__next__()
            print(el)
        except  StopIteration:
            break
    
    lst = ['qiaoning','wangtao','linux','python']
    lt = lst.__iter__()
    print('__iter__' in dir(lt))
    print('__next__' in dir(lt))
    #可以通过dir判断数据是否是可迭代的。 以及数据是否是迭代器
    

    相关文章

      网友评论

          本文标题:python之迭代器

          本文链接:https://www.haomeiwen.com/subject/xlqziltx.html