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

  • 相关阅读:
    Android数据存储
    linux中uptime命令查看linux系统负载
    Linux系统中的load average
    Trie树(c++实现)
    模版
    重载操作符[]
    stanford-postagger中文词性标注
    数值的整数次方(剑指offer面试题11)
    __init__ 和 self
    python中文分词:结巴分词
  • 原文地址:https://www.cnblogs.com/StevenSunYiwen/p/9334312.html
Copyright © 2011-2022 走看看