Python迭代对象、迭代器与生成器

yizhihongxing

关系图

在这里插入图片描述

1.可迭代对象(iterable)

一个具备__iter__()方法的对象,就是一个可迭代对象,但是要成为一个正常的可迭代对象那么就需要遵循协议。这个方法必须返

回一个迭代器。

可迭代协议: 含__iter__()方法。且可迭代对象中的__iter__()方法返回的是一个对应的迭代器。(如list对应的迭代器就是

list_iterator)

以下代码MyList 实现了__iter__方法,说明这个是一个可迭代对象,而不是一个迭代器。但这个不是一个真正的迭代对象,因为没

有返回一个迭代器,也就是没有遵循协议。
在这里插入图片描述
在这里插入图片描述

2.迭代器(iterator)

python学习交流Q群:906715085####
1.迭代是Python最强大的功能之一,是访问集合元素的一种方式。



2.迭代器是一个可以记住遍历的位置的对象。



3.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。



4.迭代器有两个基本的方法:iter() 和 next()。

 

在这里插入图片描述

  1. 字符串,列表或元组对象都可用于创建迭代器:

在这里插入图片描述
在这里插入图片描述

  1. 查看迭代器源码类,可以看到整个类实现了__iter__和__next__两个魔法方法。

在这里插入图片描述

3.生成器(generator)

 生成器是一种特殊的迭代器,不需要手动的编写__iter()__和__next()__方法,因为yeild关键字已经包含了这两种方法。

注意事项:

2.因为生成器(generator)一定是迭代器,所以生成器也是一种懒加载的模式生成值(即需要用的时候才会生成数据,不需要的时候不会生成)

1.生成器有两个实现方法:

a. 生成器表达式:将列表推导式的[]改成()即可得到生成器

b. 生成器函数:调用yield关键字即可。

在这里插入图片描述

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python迭代对象、迭代器与生成器 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • Python 最有用的25个代码段

    前言 Python是一种通用的高级编程语言。用它可以做许多事,比如开发桌面 GUI 应用程序、网站和 Web 应用程序等。 作为一种高级编程语言,Python 还可以让你通过处理常见的编程任务来专注应用程序的核心功能。并且,编程语言的简单语法规 则进一步简化了代码库的可读性和应用程序的可维护性。 与其他编程语言相比,Python 的优势在于: 1.与主要平台…

    Python开发 2023年4月2日
    00
  • 【Python】爱不释手的弹球小游戏

    前言 周末到了,不想给大家太多的压力,今天就给大家分享一个比较简单的弹球小游戏吧。这无聊的周末又有事可以做了,nice… 先看一下我们的最终效果图 我们分9步来讲解如何写这个小游戏 1.创建游戏的主界面 我们用Python的内置模块Tkinter来完成了,它是Python的标准GUI工具包,可以非常方便在制作GUI小工具,因为是跨平台的,可以方便的在 win…

    Python开发 2023年4月2日
    00
  • 【Python】实现自动扫雷,挑战世界纪录

    前言 大家好,欢迎来到 Crossin的编程教室 ! 今天给大家分享的这个案例是用 Python+OpenCV 实现了自动扫雷,并突破了人类的世界记录。(当然 这不算哈) 咱们废话不多说,先看成果~ 中级 – 0.74秒 3BV/S=60.81 相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣,也是中国扫雷第 一…

    Python开发 2023年4月2日
    00
  • 【Python】控制结构,这个教程一般人我不给

    前言 还有多少人不会python的控制结构,在评论区告诉我,让我一个个点名提问。今天,就教会你python的控制结构… 分行与缩进 分行 •一条语句占用一行 •过长的语句可以占用多行,使用\或()控制换行 •[]、{}、()可以直接跨越多行,在列表、字典、元组中需要换行的时候也可以不用添加续行符 a = 1 b = 2 c =a +b income = (g…

    Python开发 2023年4月2日
    00
  • Python 实现校园网自动登录

    背景 我在的学校校园网登录是web式的,即随便打开一个网页就会自动跳转到登录页面,然后输入用户名密码,点登录,便可以上网了。 但这种登录方式有个缺点:登录状态不会一直保持下去。即过一段时间就会掉线,然后你需要重新登陆才行。这个时间大概是一天。 这就蛋疼了,想让实验室的电脑随时保持联网状态怎么办呢?(有时候我需要远程我的电脑) 这个时候可以用python脚本解…

    Python开发 2023年4月2日
    00
  • Python—-异常处理、断言和路径处理,简单、清晰版

    1.路径处理 1.找模块:sys.path import sys print(sys.path)   – 1.理解 – 1.是python去查找包或模块 – 2.项目开始根目录,python内置的目录 – 3.虽然说python的安装目录下也可以存放我们写的模块,但是不建议(太多了,不大好找) – 4.如果以后你发现模块导入不了了 ,可以使用下sys.pat…

    Python开发 2023年4月2日
    00
  • 教你用python爬取美女照片,未成年不能学

    又到每天Python小技巧分享的时候了,今天给大家分享的是怎么样去爬取清纯小姐姐照片(没有人会拒绝美女吧,小声说),这篇文章好像有点刺激,未成年的小伙伴就不要进来了。快来看看这些清纯的小姐姐的容颜,话不多说,上教程。 先来看看效果图 不好意思,图片有点辣眼睛,被拦截了,还没有还给我….. import re import requests import …

    Python开发 2023年4月2日
    00
  • 基于 Python 的地理空间绘图(附源码)

    前言 大部分情况下,地理绘图可使用 Arcgis 等工具实现。但正版的 Arcgis 并非所有人可以承受。本文基于 Python 的 cartopy 和 matplotlib 等库,为地理空间绘图的代码实现提供参考。 所有所需库如下: gma、cartopy、matplotlib、numpy   更多内容可转到:地理与气象分析库—-使用指南(点击阅读原文…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部