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

    迭代器就是迭代的工具

    迭代:指的是重复迭代,每一次迭代的结果都是基于上一次结果而来的

    迭代器:

    指的是迭代取值的工具

    PS:如果我们想知道python中迭代器是什么,首先我们要知道什么是可迭代对象

    可迭代对象

    凡是内部有.__iter__()

    方法的都是可迭代对象,比如str,list,tuple,dict,set,f(文件)

    获取迭代器

    通过序列类型.__iter__()方法得到的返回值,就是迭代器对象

    list = [1,2,3]
    print(list.__iter__())
    
    打印结果:
    <list_iterator object at 0x0000022F3EEDC848>

    如何迭代取值?

    通过迭代器对象.__next__(),每执行一次,都会从迭代器对象中取一个值,取完再取的话就会报错:StopIteration

    # 迭代取值
    list = [1, 2, 3,4]
    list.__iter__().__next__()
    print(list.__iter__().__next__())
    
    打印结果:
    1

    这里举个例子,有4个元素取5个会怎样?

     

     那么现在我们就可以用try和except把异常抛出

    try:捕获异常(StopIteration)

    except:抛出异常

    list1 = [1, 2, 3, 4]
    list_iter = list1.__iter__()
    try:
        print(list_iter.__next__())
        print(list_iter.__next__())
        print(list_iter.__next__())
        print(list_iter.__next__())
        print(list_iter.__next__())
    except StopIteration:
        print('end')

     迭代器对象的优点

    1、不依赖于索引迭代取值

    2、节省内存空间

    缺点:

    1、取指定的某个值麻烦

    2、每次取值都要从第一个开始,无法通过索引进行取值

    可迭代对象和迭代器对象的区别:

    可迭代对象:凡是内部有.__iter__()方法的都是可迭代对象

    迭代器对象:通过序列类型.__iter__(),得到的返回值就是迭代器对象

    注意:可迭代对象不一定是迭代器对象

      但迭代器对象一定是可迭代对像

  • 相关阅读:
    OpenGL使用笔记-数学函数
    OpenGL--windows<vs2019>配置
    CTF学习记录--Wireshark抓包工具使用说明
    最小公倍数(LCM)
    CTF学习记录--抓包工具BurpSuite
    CTF学习记录--Robots协议
    ubuntu安装过程中的一些问题
    hadoop优化之拙见
    hadoop map-red的执行过程
    namenode需要升级
  • 原文地址:https://www.cnblogs.com/aheng/p/11852943.html
Copyright © 2011-2022 走看看