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__(),得到的返回值就是迭代器对象

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

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

  • 相关阅读:
    Struts2声明式异常处理
    几种常用的过滤器
    Jdk 和 Tomcat的 安装。(旧版本,请看新版本3篇)
    java 判断字符串是否相等
    PreparedStatement 查询 In 语句 setArray 等介绍。
    String、StringBuffer与StringBuilder之间区别
    IntelliJ IDEA 里 查看一个函数注释的方法是 ctrl+q
    Java字符串拼接效率对比
    Java 中判断字符串是否为空
    IntelliJ IDEA + Tomcat ;On Upate Action 与 On Frame Deactivation
  • 原文地址:https://www.cnblogs.com/aheng/p/11852943.html
Copyright © 2011-2022 走看看