• day13_迭代器


    1、迭代器是什么?

    迭代是一个重复的过程,每一次重复都是基于上次结果而来的,单纯的重复并不是迭代

    list=[1,2,3,4]
    def iterator(item):
        i=0
        while i < len(item):
            print(list[i])
    i+=1 iterator([
    1,2,3,4])

    2、为什么要有迭代器?

    列表、元组、字符串类型可基于索引迭代器取值的方式,对于没有索引的字典、集合、文件则不适用

    3、迭代器用来干啥?

    3.1 分类

    可迭代的对象:在python中 但凡内置中有__iter__方法的对象都是可迭代的对象(字符串、列表、元组、字典、集合、文件)

    迭代器对象:既内置有__iter__方法,又内置又__next__方法的对象,执行可迭代对象的__iter__方法得到的就是内置的迭代器对象(文件对象本身就是迭代器对象)

    注意:

    迭代器对象一定是可迭代对象,反之则不然

    info={"name":"sun","sex":"male"}
    info_iter=info.__iter__()
    print(info_iter)    #<dict_keyiterator object at 0x00000217D1257778>
    res=info_iter.__next__()
    print(res)    #取key值
    
    #⭐一旦迭代器取值干净,若继续取值则会抛出异常
    # StopIteration
    info=[1,2,3,4]
    while True:
        try:
            print(info_iter.__next__())
        except StopIteration
            break
    异常解决

    3.2 迭代器对象

    执行迭代器对象的__next__得到的是迭代器下一个值

    执行迭代器对象的__iter__得到的仍然是迭代器本身

    3.3 迭代器对象的优缺点

    优点:① 提供了一种通用的、可以不依赖索引的迭代取值方式

               ② 迭代器对象更加节省内存(同一时间,内存中只有一行数据)

    缺点:①迭代器的取值不如按照索引取值的方式灵活,它只可往后取而不可往前退

               ②无法预测迭代器值的个数

  • 相关阅读:
    Lucene简介
    网页去重和网页反作弊
    一个不应该犯的错octave
    使用有道笔记
    向量操作的思想
    暗时间(介绍)-关于坚持的一个故事
    bootstrap插件学习-bootstrap.tab.js(读码)
    Bootstrap 实现CRUD示例及代码
    Bootstrap Table 使用示例及代码
    Bootstrap Table相关参数及属性、方法
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9174116.html
Copyright © 2020-2023  润新知