zoukankan      html  css  js  c++  java
  • python——函数17 、迭代器(一)

    什么是迭代器?

    答:重复,下一次的输出是基于上一次的结果

    列子:

    i=[1,2,3,4]
    count=0
    while count<len(i):
        print(i[count])
        count+=1
    View Code

    索引

    i={'a':1,'b':2,'c':3}
    for k in i:
        print(k)
    View Code

    通常以前都会去用索引取值,现在有了一个可以不依赖索引取值的方法, python里有内置的迭代方法: X.__iter__   这个X是什么?  X可以是 字典、列表、字符串、集合、元组、文件。

    这个X.__iter__就称为迭代的对象(也就是说当可以用迭代的方法时就称为可迭代对象 ), 输出的结果就称为迭代器 

    当你已经成功的写出一个迭代器 那么就一定会再有一个__next__的这个方法,请看下面的代码:

    i={'a':1,'b':2,'c':3}
    a=i.__iter__()
    b=a.__next__()
    View Code

    很显然 这个a就是一个迭代器  那么就可以接着写b 但是不可以直接a=i.__next__()这是错误的 next(然后)的意思 你都没有第一次 那么就不会有然后

    i={'a':1,'b':2,'c':3}
    a=i.__next__()
    
    #######错的 错的 错的 #####
    View Code

    完整的迭代器:

    i={'a':1,'b':2,'c':3}
    a=i.__iter__()
    print(a.__next__())
    print(a.__next__())
    print(a.__next__())
    View Code

    如果你的print多于变量的数量 那么就会StopIteration报错

    总结:

    迭代器的优点:

    1、不依赖于索引取值

    2、节省内存  (迭代器本身就是一个内存地址,管你有几十万,几百万的值,你写几个next就取出几个值)

    迭代器的缺点:

    1、取值麻烦

    2、不可逆,也就是只能一直next往后取值 不可以往回取值

  • 相关阅读:
    Unity做AR
    Linux怎么安装vim编译器
    Linux命令之tar
    Linux命令之ln
    Linux命令之grep
    Linux命令之less
    Linux命令之cd
    Linux命令之ll
    Linux命令之cp
    Linux命令之rm
  • 原文地址:https://www.cnblogs.com/StevenSunYiwen/p/9334312.html
Copyright © 2011-2022 走看看