zoukankan      html  css  js  c++  java
  • Python学习笔记之Python迭代器正确使用方法详解



    一、迭代器相关
    迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器的内容。

    关键点:遍访(遍历?)容器  写到这里 给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节

    二、迭代器特点
    1.迭代器可以从集合的第一个数据开始访问数据,直到最后一个

    2.迭代器只可向前访问,不能倒退(next()方法)

    3.迭代器的两个基本方法:next()、iter()

    三、Python中的迭代器
    迭代器的两个基本方法:next()、iter()

    1.获取String类型的迭代器,while遍历

    a, i = "Baldwin", 0
    it = iter(a)
    while i < len(a):
    print(next(it), end=" ")
    i += 1
    E:WorkSpacesPycharmProjectsPyDemovenvScriptspython.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
    B a l d w i n
    Process finished with exit code 0
    2.for遍历

    a = "Baldwin"
    it = iter(a)
    for a in it:
    print(a,end=" ")
    E:WorkSpacesPycharmProjectsPyDemovenvScriptspython.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
    B a l d w i n
    Process finished with exit code 0
    四、创建迭代器
    本段默认读者有面向对象的理解基础

    如果我们想把一个类当做迭代器来使用,我们最基础的要实现__iter__() 与 __next__() 两个方法。

    __iter__():返回一个迭代器对象,并在这个迭代器对象中实现了__next__()方法

    __next__():在Python2中,这个方法名为next(),这个方法会返回下一个迭代器class NumbersForIt:

    def __iter__(self): # 创建 __iter__
    self.a = 1
    return self

    def __next__(self): # 创建 __next__
    b = self.a
    self.a += 1
    return b


    numbwes = NumbersForIt()
    it = iter(numbwes)
    print(next(it))
    print(next(it))
    print(next(it))
    print(next(it))
    print(next(it))
    print(next(it))
    E:WorkSpacesPycharmProjectsPyDemovenvScriptspython.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py

    Process finished with exit code 0
    五、生成器创建迭代器
    在 Python 中,使用了 yield 的函数被称为生成器(generator)。

    跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

    在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

    调用一个生成器函数,返回的是一个迭代器对象。

    def generator():
    a = 1
    while True:
    yield a
    a += 1


    it, b = generator(), 0
    while b < 10:
    print(next(it), end=" ")
    b += 1
    E:WorkSpacesPycharmProjectsPyDemovenvScriptspython.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
    1 2 3 4 5 6 7 8 9 10
    Process finished with exit code 0
    使用generator实现斐波那契数列

    def generator():
    a, b = 1, 1
    while True:
    yield a
    a, b = b, a + b


    it, m = generator(), 0
    while m < 10:
    print(next(it), end=" ") # 此时我们获取到的是上面a的值
    m += 1
    E:WorkSpacesPycharmProjectsPyDemovenvScriptspython.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
    1 1 2 3 5 8 13 21 34 55
    Process finished with exit code 0
    六、总结
    1.无论在哪一种语言中,迭代器的正确使用都很重要

    2.yield的使用能够快速创建一个迭代器,需要注意的是,要在while中添加正确的迭代规则

    最后,给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节
    本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 相关阅读:
    cmd 窗口中运行 Java 程序
    局部变量保证线程安全
    AQS源码详细解读
    理解 Java 内存模型的因果性约束
    高性能Java序列化框架Fse发布
    心跳与超时:高并发高性能的时间轮超时器
    支持内部晋升的无锁并发优先级线程池
    最终一致性:BASE论文笔记
    Activiti架构分析及源码详解
    理解OAuth2
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12545627.html
Copyright © 2011-2022 走看看