zoukankan      html  css  js  c++  java
  • 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 迭代器对象的优缺点

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

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

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

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

  • 相关阅读:
    Visual Studio LightSwitch
    Android 虚拟机与真机调试配置
    点击手机 menu 硬件按钮后的显示及处理
    Windows Phone 7 真机调试
    Android 调试
    Android 新建项目 页面
    今天我的Windows Phone 7 HTC HD7 手机 升级 NoDo 了 分享一下经验
    Activity 之间调用与参数传递
    Android widget 组件
    解决 warning: found plain 'id' attribute; did you mean the new 'android:id' name? 问题
  • 原文地址:https://www.cnblogs.com/Smart1san/p/9174116.html
Copyright © 2011-2022 走看看