• 迭代器


    1.迭代器的定义:
      字面意思:更新迭代,器:工具,可更新迭代的工具。
      专业角度:内部含有'__iter__'方法且含有'__next__'方法的对象就是迭代器

    2.可迭代对象与迭代器的对比

      可迭代对象是一个操作方法较多、比较直观、存储数据较少的一个数据集。侧重于对数据可以灵活处理,内存足够大,可以将数据集 设置为可迭代对象

      迭代器是一个非常节省内存,可以记录取值位置,可以通过循环+next()方法取值,但是不直观,操作方法比较单一的数据集。

      当你的数据量过大时,以节省内存为首选因素时,就可以将数据集设置为迭代器

    3.优点

      1.节省内存

      2.惰性机制:即next()一次,取一个值,绝不多取

    4.缺点

      1.不能直观的查看里面的数据

      2.取值时只能依次向下取值

      3.速度慢

    # 判断是否是迭代器:'__iter__' and '__next__' in dir(对象)
    with open('gg.txt', encoding='utf-8', mode='w') as f:
        print(('__iter__' and '__next__') in dir(f))
        f.write('文件句柄是迭代器噢!')
    # 可迭代对象可以转化成迭代器
    s1 = 'dsfdsf'
    
    # obj = s1.__iter__()
    obj = iter(s1) # 将s1转化为迭代器
    print(obj)
    
    # print(obj.__next__())
    print(next(obj)) # 利用迭代器对s1进行直接依次取值
    
    
    l1 = [11, 22, 33, 44, 55, 66]
    iter_l1 = iter(l1)
    
    print(next(iter_l1))
    print(next(iter_l1))
    print(next(iter_l1))
    print(next(iter_l1))
    print(next(iter_l1))
    print(next(iter_l1))
    # 迭代器在进行迭代取值时永远会记住当前所在的位置
    l2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    obj2 = iter(l2)
    for i in range(4):
        print(next(obj2))
    
    for i in range(4, 9):
        print(next(obj2))
  • 相关阅读:
    C#操作数据库,将其查查出来的记录条数显示在winform窗体中的方法之一
    关于SQL配置管理器的服务无法启动的解决办法!
    测试随笔
    .net版ckeditor配置水印功能(转)
    vs2010安装路径解决不能修改的方法
    c#wiform中KeyDown事件
    C#winform程序自定义鼠标样式
    一条sql语句循环插入N条不同记录(转)
    winform降低功耗总结
    ILMerge合并程序
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13528165.html
Copyright © 2020-2023  润新知