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往后取值 不可以往回取值

  • 相关阅读:
    Jenkins + GitLab 通过 Webhook 自动触发构建爬坑记录
    Spring Cloud Eureka 学习记录
    [源码分析]ArrayList
    一个简单的统计问题(解决方案:Trie树)
    Redis基本数据类型命令汇总
    Redis的Pub/Sub客户端实现
    从ByteBuffer中解析整数
    学习T-io框架,从写一个Redis客户端开始
    折腾一下WebSocket的ArrayBuffer传输方式
    Ubuntu安装docker笔记
  • 原文地址:https://www.cnblogs.com/StevenSunYiwen/p/9334312.html
Copyright © 2011-2022 走看看