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

    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))
  • 相关阅读:
    swift-教你如何实现导航上的UISearchController动画效果。
    swift-自动计算字符串的宽高
    值得收藏--GitHub Top 20 开源项目
    swift-通知的基本使用
    swift-UITableView的基本使用
    绝对好用的浏览器json解析网址
    swift-正则验证手机号码
    swift-计算字符串长度
    swift-导航栏添加自定义返回按钮
    swift-UITextfield控件的基本属性设置
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13528165.html
Copyright © 2011-2022 走看看