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

    迭代器

    1  什么是迭代:指的是一个重复的过程,每一次重复称为一次迭代,并且每一次重复的结果是下一次重复的初始值

    2  为什么要有迭代器:

    对于序列类型:str list tuple可以依赖索引 进行迭代取值   但是对于dict和set,文件  Python必须提供不依赖于索引的迭代

    取值方式;因而被称之为迭代器

    3      可迭代的对象

    obje.__iter__

     针对只要含有内置方法__iter__ 就是可迭代的对象

    name='cisco'
    name.__iter__()
    <str_iterator object at 0x02F56030>

    4迭代器对象  同时有以下2种方法

    obj.__iter__

    obj.__next__

    f=open('a.txt','r',encoding='utf-8')
    f.__next__
    f.__iter__


    总结:
    1 可迭代对象不一定是迭代器对象
    2 迭代器对象一定是可迭代对象




    调用__iter__() 方法 得到的是迭代器对象 将原先可迭代对象变成迭代器对象
    其实此处严格意义上说,只要可以有__iter__方法就可以变成迭代器对象


    d={'key1':'value1','key2':'value2'}
    d_iter=d.__iter__()
    d_iter2=d_iter.__iter__()
    d_iter3=d_iter.__next__


    针对字典取key
    d={'key1':'value1','key2':'value2'}
    d_iter=d.__iter__()
    print(d_iter.__next__())
    print(d_iter.__next__())
    d.__iter()=iter(d)

    调用__next__() 方法    等价于d.__next__()=next(d)


    迭代器举例代码


    d={'key1':'value1','key2':'value2','key3':'value3'}
    d_iter=iter(d)
    while True:
        try:
            print(next(d_iter))
        except StopIteration:
            break
    print('===========>')
    print('===========>')
    print('===========>')
    
    
    
    
    

    for循环详解

    d={'key1':'value1','key2':'value2','key3':'value3'}

    迭代器的优缺点:
    提供一种统一的,不依赖索引的取值方式,为for循环提供依据


  • 相关阅读:
    sqlserver中的锁与事务
    策略模式
    异步编程
    并行聚合操作
    EF中的自动追踪与代理
    C#6.0语法糖
    EF中使用SqlQuery进行参数化查询时抛出异常
    乐观并发
    为什么那么多公司不用 .NET
    sqlserver 更改跟踪相关知识
  • 原文地址:https://www.cnblogs.com/nodchen/p/8746689.html
Copyright © 2011-2022 走看看