• 迭代器


    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))
  • 相关阅读:
    【06】SQL语句之创建数据库
    【05】数据类型
    【02】SQL Server 配置管理器基本使用
    【01】连接到数据库引擎
    MySQL学习记录【02】常用数据类型
    MySQL学习记录【01】主键
    [转]九个Console命令,让js调试更简单
    HTML5中引入的关键特性
    [转]CSS hack大全&详解
    [转]IE8兼容Object.keys
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13528165.html
Copyright © 2020-2023  润新知