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

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

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

  • 相关阅读:
    父类与子类之间的调用顺序
    ROW_NUMBER() OVER函数的基本用法用法
    String类
    代码块
    权限修饰符
    内部类
    final&static
    面向对象思想
    oracle存储过程常用技巧
    ORACLE EXECUTE IMMEDIATE 用法
  • 原文地址:https://www.cnblogs.com/aheng/p/11852943.html
Copyright © 2011-2022 走看看