zoukankan      html  css  js  c++  java
  • 迭代器

    迭代器协议


    1.迭代器协议是指对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stopiteration一场,以终止迭代(只能往后走不能往前退),比如我能生儿子,儿子生孙子,不能把自己的爹给生出来

    2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法)

    3.协议是一种约定。可爹地啊对象实现了迭代器协议,python的内部工具(for循环,sum,min,max函数)使用迭代器协议访问对象

    以for循环机制来讲解迭代器


    for循环的本质:循环所有对象,全都是使用迭代器协议。

    平常我们经常使用for iterm in (字符串、列表、元组、字典、集合)

    看起来他们好像是可迭代对象,可是根据定义,他们并没有next方法,所以他们不是可迭代对象

    但是一旦使用for循环,就会调用他们的__iter__()方法,将他们变为可迭代对象

    testStr = "hello"
    
    iterTest  = testStr.__iter__()   #将对象变为可迭代对象
    print(iterTest)  #打印结果为<str_iterator object at 0x000001FFF0E27390>
    print(iterTest.__next__()) #打印结果为h
    print(iterTest.__next__()) #打印结果为e
    print(iterTest.__next__()) #打印结果为l
    print(iterTest.__next__()) #打印结果为e

    实际上for循环就是差不多以以上代码的方式来实现的,

    为什么需要for循环呢,比如字符串、列表、元组可以直接用索引的方式遍历,但是针对于无序的比如字典、集合,索引就束手无策了,但是迭代器可以

    所以for循环提供了一个统一的接口来遍历对象

  • 相关阅读:
    win7系统宽带自动断开怎么解决【系统天地】
    Win10系统修复受损文件教程【系统天地】
    win10如何加快开机速度【系统天地】
    Netty核心概念(5)之Channel
    Netty核心概念(4)之Bootstrap
    漫谈NIO(3)之Netty实现
    漫谈NIO(2)之Java的NIO
    漫谈NIO(1)之计算机IO实现
    机器学习实战(二)决策树
    机器学习实战(一)k-近邻算法
  • 原文地址:https://www.cnblogs.com/codescrew/p/8724583.html
Copyright © 2011-2022 走看看