广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python迭代、可迭代对象、迭代器及生
  • 509
分享到

python迭代、可迭代对象、迭代器及生

迭代器及对象 2023-01-30 23:01:37 509人浏览 泡泡鱼

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

摘要

迭代 通常意义上的迭代是指:重复执行一系列运算,从前面的量依次推出后面的量的过程,每一次迭代的结果,会作为下一次迭代的初始值。 在c、c++、java等编程语言中的for循环语句,就是一个迭代过程,例如: for(int i=0;i&l

迭代

通常意义上的迭代是指:重复执行一系列运算,从前面的量依次推出后面的量的过程,每一次迭代的结果,会作为下一次迭代的初始值。

在c、c++、java等编程语言中的for循环语句,就是一个迭代过程,例如:

for(int i=0;i<100;i++)
{
   cout << i << endl;
}

这种for循环语句比较符合迭代的含义,for语句中给定了一个初始输入 i=0 ,然后开始执行一个重复推导变量 i 是否小于 100 ,如果小于就对 i 加1并执行循环体中代码的过程,且每次执行后的结果将作为下一次推导的输入值,这个过程就是迭代。

python中,也使用了 for 关键字来实现类似过程,具体形式为 for ... in ... ,当然迭代过程也可以通过while循环语句等来实现,但不在本文讨论范畴,这里不做说明。在Python中通常使用 for ... in ... 的形式来遍历一个list或tuple等对象,这种遍历过程,通常称为迭代(Iteration)。例如:

上图中,通过for语句来遍历列表L,实现语句块的重复执行过程。这里之所以每次迭代时都让num的值加3,是为了说明语句块中对num进行修改后的值并不会带入到下一次迭代过程,这里应注意与C、C++、java等语言的for循环语句的区别。至于为什么是这样,可以查阅python语法中for语句的执行原理,这里不再详述。

可迭代对象与迭代器

可迭代对象:使用内置iter函数可以获取迭代器的对象,称为可迭代对象。通常指实现了能返回迭代器的__iter__方法或实现了__getitem__方法且其参数从0开始索引的对象。

迭代器:指实现了无参数的__next__方法的对象。__next__方法返回序列中的下一个元素;如果没有元素了,则抛出StopIteration异常。通常情况下,迭代器也应该实现__iter__方法,迭代器的__iter__方法应该返回其自身(self),因为实现了__iter__方法,所以迭代器可迭代。

区别与联系:迭代器可以迭代,但可迭代对象不是迭代器。可迭代对象一定不能是自身的迭代器,即可迭代对象一定不能实现__next__方法;迭代器应该一直可以迭代,其__iter__方法应该返回自身;可迭代对象可以重复使用(可以不断生成新的迭代器),但迭代器只能用一次,迭代结束后不会自动重置。示例:

class IteratorObj:

    def __init__(self, max):
        self.a = 0
        self.b = 1
        self.max = max

    def __iter__(self):
        return self

    def __next__(self):
        self.a, self.b = self.b, self.a + self.b
        if self.a > self.max:
            raise StopIteration()
        return self.a

class IterableObj:

    def __init__(self, max):
        self.max = max

    def __iter__(self):
        return IteratorObj(self.max)

python中for循环遍历的本质就是调用遍历对象的__iter__方法,得到一个迭代器,再调用迭代器的__next__方法依次获取对象的值并自动捕获StopIteration异常。

生成器

生成器是一种特殊的迭代器,可通过使用迭代器的方法使用生成器。

python定义生成器的方法有两种:

生成器函数:使用普通函数的定义语法定义,但函数体内必须包含yield关键字,即包含yield语句的函数都被称为生成器。生成器函数虽然看上去像函数,但与函数的行为截然不同。区别在于生成器函数不是使用return语句返回一个值,而是可以生成多个值,每次生成一个。每次使用yield生成一个值后,函数被中断,在此处停止执行,再次被调用时,函数将从上一次停止的地方开始继续执行。例如:

注意:当生成器因没有可生产的值退出时,同样会抛出StopIteration异常。

生成器表达式:类似于列表推导,只不过要将列表推导中的[]换成()。例如:

上图中,当第6次调用next(g)时,因没有值可生产而抛出了StopIteration异常。

以上。

 

 

--结束END--

本文标题: python迭代、可迭代对象、迭代器及生

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

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

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

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

下载Word文档
猜你喜欢
  • 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容器、可迭代对象、迭代器及生成器这么应用
    这篇文章主要讲解了“Python容器、可迭代对象、迭代器及生成器这么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python容器、可迭代对象、迭代器及生成器这么应用”吧!一、容器1.什...
    99+
    2023-06-29
  • 详解Python之可迭代对象,迭代器和生成器
    目录一、概念描述二、序列的可迭代性三、经典的迭代器模式四、生成器也是迭代器五、实现惰性迭代器六、使用生成器表达式简化惰性迭代器总结 一、概念描述 可迭代对象就是可以迭代的对象,我们可...
    99+
    2022-11-12
  • 一文搞懂​​​​​​​python可迭代对象,迭代器,生成器,协程
    目录设计模式:迭代python:可迭代对象和迭代器为什么要有生成器?python的生成器实现协程设计模式:迭代 迭代是一种设计模式,解决有序便利序列的问题。通用的可迭代对象需要支持d...
    99+
    2022-11-11
  • ​​​​​​​python可迭代对象,迭代器,生成器,协程实例分析
    这篇文章主要介绍了python可迭代对象,迭代器,生成器,协程实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python可迭代对象,迭代器,生成器,协程实例分析文章都会有所收获,下面我们一起来看看吧。设...
    99+
    2023-06-30
  • 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的数据结构时,容器(container)、可迭代对象...
    99+
    2023-06-17
  • 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之容器 可迭代对象 迭代器 生成器专题讲解
    目录一、容器1.什么是容器?二、可迭代对象1.什么是可迭代对象?三、迭代器四、序列五、列表推导式六、生成器1.生成器的第一种创建方法:生成器表达式2.生成器的第二种创建方法:yiel...
    99+
    2022-11-12
  • JavaScript中可迭代对象与迭代器的作用是什么
    今天就跟大家聊聊有关JavaScript中可迭代对象与迭代器的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Lazy evaluation...
    99+
    2022-10-19
  • JavaScript Lazy evaluation中可迭代对象与迭代器是怎样的
    今天就跟大家聊聊有关JavaScript Lazy evaluation中可迭代对象与迭代器是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。L...
    99+
    2022-10-19
  • 详解Python迭代和迭代器
    我们将要来学习python的重要概念迭代和迭代器,通过简单实用的例子如列表迭代器和xrange。 可迭代 一个对象,物理或者虚拟存储的序列。list,tuple,strins,dicttionary,set...
    99+
    2022-06-04
    迭代 详解 Python
  • Python迭代和迭代器详解
    迭代器 迭代器(iterator)有时又称游标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的界面,设计人员无需关心容器物件的内存分配的实现细节。 摘自维...
    99+
    2022-06-04
    迭代 详解 Python
  • Python中对象迭代与反迭代的技巧总结
    一、如何实现可迭代对象和迭代器对象? 实际案例 某软件要求从网络抓取各个城市气味信息,并其次显示: 北京: 15 ~ 20 天津: 17 ~ 22 长春: 12 ~ 18 ...... 如果一次抓取...
    99+
    2022-06-04
    迭代 对象 技巧
  • python如何遍历可迭代对象
    这篇“python如何遍历可迭代对象”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python如何遍历可迭代对象”文章吧。可...
    99+
    2023-07-05
  • python 生成器&迭代器
      一、生成器 1、列表生成器:列表生成式就像是一个厨师,他只会做这n(n为任意整数)道菜,想吃甚麽做甚麽,不吃不做,不浪费空间;而列表表达式就相当于已经做好的n盘菜,占用空间。2、生成器的创建方法: s = (x*2 for x in...
    99+
    2023-01-30
    生成器 迭代 python
  • python中的可迭代对象有哪些
    python中的可迭代对象有列表、字符串、元组、字典几种列表L = list(range(100))for i in L:print(i)字符串S = 'Say YOLO Again!'for s in S: print(s)返回'索引-元...
    99+
    2022-10-08
  • Python中迭代和迭代器是什么
    本篇文章给大家分享的是有关Python中迭代和迭代器是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。可迭代一个对象,物理或者虚拟存储的序列。list,tuple,strin...
    99+
    2023-06-17
  • python 迭代器
    我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。这些可以直接作用于...
    99+
    2023-01-30
    迭代 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作