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

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

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

  • 相关阅读:
    怎么样下载安装 pyinstaller
    怎样给python编译成dll文件
    解决jmeter报connection reset 错误的方法
    redis使用jmeter测试
    前端性能测试ShowSlow+Yslow
    性能测试工具curl-loader(linux)
    Js 数组返回去重后的数据
    批量处理sql 数据存入xml类型列
    SQL Server游标(转)
    SQL中varchar和nvarchar的区别
  • 原文地址:https://www.cnblogs.com/aheng/p/11852943.html
Copyright © 2011-2022 走看看