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

  • 相关阅读:
    想更改Github仓库中的某个文件结构
    记git一些基本用法
    剑指Offer-Python(16-20)
    剑指Offer-Python(11-15)
    初次使用flask
    Python的Cmd模块的简易运用学习
    SQL-全称量词查询
    线段树模板1
    OJ输入输出超时(C++)
    二叉查找树(BST)定义
  • 原文地址:https://www.cnblogs.com/StevenSunYiwen/p/9334312.html
Copyright © 2011-2022 走看看