广告
返回顶部
首页 > 资讯 > 后端开发 > Python >​​​​​​​python可迭代对象,迭代器,生成器,协程实例分析
  • 406
分享到

​​​​​​​python可迭代对象,迭代器,生成器,协程实例分析

2023-06-30 12:06:21 406人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python可迭代对象,迭代器,生成器,协程实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python可迭代对象,迭代器,生成器,协程实例分析文章都会有所收获,下面我们一起来看看吧。设

这篇文章主要介绍了python可迭代对象,迭代器,生成器,协程实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python可迭代对象,迭代器,生成器,协程实例分析文章都会有所收获,下面我们一起来看看吧。

    设计模式:迭代

    迭代是一种设计模式,解决有序便利序列的问题。通用的可迭代对象需要支持done和next方法。

    伪代码如下:

    while not iterator.done():      item = iterator.next()      .....

    python:可迭代对象和迭代器

    python的可迭代对象需要实现__iter__()方法,返回一个迭代器。for循环和顶级函数iter(obj)调用obj的__iter__()方法,返回一个迭代器。迭代器本身也是可迭代对象,所以也需要实现__iter__()方法,返回自身,同时也需要实现__next__()方法,获取下一个元素。

    简单类示例:

    class Iterable:    def __init__(self,string):        self.string = string            def __iter__():        return Iterator(self.string)    class Itrator:    def __init__(self,string):        self.string = string        self.Words = list(string)        self.index = 0            def __iter__(self):        return self            def __next__(self):        if self.index == len(self.words):            raise StopIteration  # 元素遍历完成抛出错误,for循环自动处理                item = self.words[self.index]        self.index += 1        return item

    为什么要有生成器?

    生成器帮助迭代器省内存。在上面的例子可以看出,可迭代对象会一次性把所有元素生成并保存。但是有时候,我们只关注当前处理的元素。如果元素数量庞大,比如说在处理大量日志分析的时候,一次性把所有行加载到内存,导致内存浪费严重。所以才有了生成器。

    python的生成器实现

    yield关键字让python生成器实现超级方便。yield可看成是代码执行暂停,直到下一次next()方法调用,然后遇到下一个yield再次暂停。另外,yield xxx 表示回元素xxx。

    def my_generator(stirng):    for x in string:        yield x

    需要注意的是,虽然我们定义的是函数,但是实际上,python会自动将其转换成一个生成器对象,而不是一个普通的函数对象。

    协程

    协程程用是让我们可以往生成器发送数据。协程与生成器语法区别是: xx = yield xxx,即yield左边有赋值语句,send(a)方法会将a赋值给xx,协程对象返回xxx。协程的这个特征,被用于异步编程并发编程,在程序遇到IO时自动暂停切换。

    协程执行顺序:

    • yield 出现和生成器暂停

    • 在函数外执行send()方法,且激活了生成器

    • 发生的值赋值给yiled语句左侧变量

    • 生成器继续执行,直到遇到下一个yield语句。

    关于“python可迭代对象,迭代器,生成器,协程实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“python可迭代对象,迭代器,生成器,协程实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网Python频道。

    --结束END--

    本文标题: ​​​​​​​python可迭代对象,迭代器,生成器,协程实例分析

    本文链接: https://www.lsjlt.com/news/328872.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • ​​​​​​​python可迭代对象,迭代器,生成器,协程实例分析
      这篇文章主要介绍了python可迭代对象,迭代器,生成器,协程实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python可迭代对象,迭代器,生成器,协程实例分析文章都会有所收获,下面我们一起来看看吧。设...
      99+
      2023-06-30
    • 一文搞懂​​​​​​​python可迭代对象,迭代器,生成器,协程
      目录设计模式:迭代python:可迭代对象和迭代器为什么要有生成器?python的生成器实现协程设计模式:迭代 迭代是一种设计模式,解决有序便利序列的问题。通用的可迭代对象需要支持d...
      99+
      2022-11-11
    • python迭代、可迭代对象、迭代器及生
      迭代 通常意义上的迭代是指:重复执行一系列运算,从前面的量依次推出后面的量的过程,每一次迭代的结果,会作为下一次迭代的初始值。 在c、c++、java等编程语言中的for循环语句,就是一个迭代过程,例如: for(int i=0;i&l...
      99+
      2023-01-30
      迭代 器及 对象
    • python学习之可迭代对象、迭代器、生成器
      Iterable – 可迭代对象 能够逐一返回其成员项的对象。 可迭代对象的例子包括所有序列类型 (例如 list, str 和 tuple) 以及某些非序列类型例如 dict, 文...
      99+
      2022-11-12
    • 详解Python之可迭代对象,迭代器和生成器
      目录一、概念描述二、序列的可迭代性三、经典的迭代器模式四、生成器也是迭代器五、实现惰性迭代器六、使用生成器表达式简化惰性迭代器总结 一、概念描述 可迭代对象就是可以迭代的对象,我们可...
      99+
      2022-11-12
    • JavaScript中的迭代器和可迭代对象与生成器
      目录1. 什么是迭代器?1.1 迭代器的基本实现1.2 迭代器的封装实现2. 什么是可迭代对象2.1 原生可迭代对象(JS内置)2.1.1 部分for of 演示2.1.2 查看内置...
      99+
      2022-11-13
    • Python容器、可迭代对象、迭代器及生成器这么应用
      这篇文章主要讲解了“Python容器、可迭代对象、迭代器及生成器这么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python容器、可迭代对象、迭代器及生成器这么应用”吧!一、容器1.什...
      99+
      2023-06-29
    • Python中for循环可迭代对象迭代器及生成器源码学习
      目录问题:1. 迭代1.1 可迭代对象Iterable1.2 迭代器Iterator1.3 for循环1.3.1 iter()方法和next()方法1.3.2 iter()和__it...
      99+
      2022-11-11
    • 怎样理解Python迭代对象和迭代器以及生成器
      这篇文章将为大家详细讲解有关怎样理解Python迭代对象和迭代器以及生成器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在了解Python的数据结构时,容器(container)、可迭代对象...
      99+
      2023-06-17
    • ES6语法之可迭代协议和迭代器协议的示例分析
      这篇文章给大家分享的是有关ES6语法之可迭代协议和迭代器协议的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ECMAScript 2015的几个补充,并不是新的内置或语法...
      99+
      2022-10-19
    • 稳扎稳打学Python之容器 可迭代对象 迭代器 生成器专题讲解
      目录一、容器1.什么是容器?二、可迭代对象1.什么是可迭代对象?三、迭代器四、序列五、列表推导式六、生成器1.生成器的第一种创建方法:生成器表达式2.生成器的第二种创建方法:yiel...
      99+
      2022-11-12
    • Python 迭代器与生成器实例详解
      Python 迭代器与生成器实例详解 一、如何实现可迭代对象和迭代器对象 1.由可迭代对象得到迭代器对象 例如l就是可迭代对象,iter(l)是迭代器对象 In [1]: l = [1,2,3,4] ...
      99+
      2022-06-04
      生成器 详解 实例
    • ES6中迭代器与生成器的示例分析
      这篇文章将为大家详细讲解有关ES6中迭代器与生成器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:循环语句的问题var colors ...
      99+
      2022-10-19
    • Python 中迭代器与生成器实例详解
      Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的所...
      99+
      2022-06-04
      生成器 详解 实例
    • Python 迭代器、生成器和列表解析
      迭代器 迭代器在 Python 2.2 版本中被加入, 它为类序列对象提供了一个类序列的接口。 Python 的迭代无缝地支持序列对象, 而且它还允许迭代非序列类型, 包括用户定义的对象。即迭代器可以迭代不是序列但表现出序列行为的对象, ...
      99+
      2023-01-31
      生成器 迭代 列表
    • Python中切片迭代列表生成式及生成器的示例分析
      小编给大家分享一下Python中切片迭代列表生成式及生成器的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在Python中,代码越少越好、越简单越好。基于这一思想,需要掌握Python中非常有用的高级特性,1行代码...
      99+
      2023-06-25
    • Python开发之迭代器&生成器的实战案例分享
      目录迭代器&生成器实战案例迭代器&生成器 在 Python 中,迭代器和生成器都是用来遍历数据集合的工具,可以按需逐个生成或返回数据,从而避免一次性加载整个数据集合所...
      99+
      2023-05-16
      Python迭代器 生成器开发 Python迭代器 生成器 Python迭代器 Python生成器
    • 带参装饰器,迭代器,生成器,枚举对象
      一,复习 ''' 函数的嵌套定义:在函数内部定义另一个函数 闭包:被嵌套的函数 -- 1.外层通过形参给内层函数传参 -- 2.验证执行 开放封闭原则: 功能可以拓展,但源代码与调用方式都不可以改变 装饰器:装饰器...
      99+
      2023-01-31
      生成器 对象 迭代
    • python迭代器和生成器怎么实现
      本篇内容介绍了“python迭代器和生成器怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!迭代器和生成器是python中非常强大的功能...
      99+
      2023-06-27
    • Python元类与迭代器生成器案例详解
      1.__getattr__和__getattribute__魔法函数 __getattr__是当类调用一个不存在的属性时才会调用getattr魔法函数,他传入的值item就是你这个调...
      99+
      2022-11-12
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作