Iterator与Iterable(迭代器与可迭代)

news/2024/11/15 11:06:22/文章来源:https://www.cnblogs.com/MyRecords/p/18328446

一 前言

环境: python 3.10 win10

二 Iterator(迭代器)

Iterator 是python的内置类型之一,看下其定义
image

该类型的实例对象称之为iterator(迭代器对象)
要得到一个iterator(迭代器对象),可用内置函数iter()将 list tuple等转成迭代器对象
也可以自定义一个迭代器类型的class,该class的实例对象就是迭代器对象

迭代器对象需要支持一下两个方法:

  • iterator.iter(): 返回迭代器对象本身()

  • iterator.next():重复调用该方法,将逐个返回迭代器中的数据,如果已经没有可返回的项,则会引发 StopIteration 异常

下面自定义一个迭代器对象的class,该class的迭代器对象通过__next__()或者内置函数next()能不断返回偶数
image

实际使用中,并不需要一直重复调用next(),因为迭代器对象也一定是后面讲的可迭代对象,所以。可直接将迭代器用于for循环中,不断返回其中的数据
image

用内置函数转换得到的迭代器对象也有上面两个方法
image

判断一个对象是否是否是Iterator类型
image

三 Iterable(可迭代)

Iterable也是一种类型即class ,看下其定义
image

这种类型的对象称为可迭代对象,它是一种能够逐个返回其成员项的对象。 可迭代对象的例子包括所有序列类型(如 list, str 和 tuple 等)以及某些非序列类型如 dict, 文件对象 以及任何定义了 iter() 方法或实现了 sequence 语义的 getitem() 方法的自定义类的对象。

由上面可知,迭代器对象一定是可迭代对象,因为迭代器对象肯定支持__iter__()方法,class的定义也显示Iterator继承自Iterable
反过来,可迭代对象不一定是迭代器

英语单词iterate本就有迭代、重复、反复之意。
可迭代对象可用于for循环,不断得到其中的数据

判断是否是可迭代对象
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773265.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基础 手写回忆篇

java 特性:分布行,跨平台性,安全行,多线程,面向对象编程,简单性 高级语言分为编译型和解释型: 编译型:整个程序写完一起编译速度快效率高 解释性:需要一句解释一句编译速度慢效率低 java是两者综合:编译器(javac)先把你写好的代码编译成class文件(字节码文件)再用j…

洛谷 Markdown - 从入门到精通

洛谷 Markdown - 从入门到精通 编写——Jerrycyx(CSDN,洛谷) 洛谷博客查看因为洛谷博客的渲染机制和其它地方不一样,可能导致渲染错误,所以你可以到这里食用:https://www.luogu.com.cn/paste/wu019n2x绪论希望更丰富的展现?使用 Markdown。这是洛谷文字编辑时会出现的一行…

Dev-C++ 的功能与外观优化

预备 安装 安装 Dev-C++ 5.11:官方下载:https://sourceforge.net/projects/orwelldevcpp/(若下载缓慢可选择 Problem Downloading->Auto-select) 蓝奏云下载:https://wwu.lanzouq.com/iTwwW07r28ni运行安装包即可。 更改语言 如果界面语言为英文,选择 Tools -> Env…

OI 中各种输入方式的速度比较(C++,大量实测数据,附图表)

测试信息 本次共测试了以下几种输入方式的速度:scanf cin 快读 位运算快读 fread() + 位运算快读 关闭同步流的 cin 开启 tie 绑定并关闭同步流的 cin每组测试各输入方式均使用相同数据,为随机生成的 \(1000000\)(1E6) 个整数,范围在 \([-(2^{31}-1),2^{31}-1]\)(即 int …

乒乓球比赛计分系统需求流程——最小可用产品

计应222_杜晓瑾_2210502012 乒乓球比赛计分系统需求流程——最小可用产品 作为一名裁判,我希望可以在系统上进行网络计时、记成绩,以便大家可以监督和观看任务 Sprint 1 2 3 4 5 6 7 8 9 10 开通网络计时(1h) 1 0 网络计时(4h) 4 2 1 0 进行网络记成绩(3h…

Easysearch、Elasticsearch、Amazon OpenSearch 快照兼容对比

在当今的数据驱动时代,搜索引擎的快照功能在数据保护和灾难恢复中至关重要。本文将对 Easysearch、Elasticsearch 和 Amazon OpenSearch 的快照兼容性进行比较,分析它们在快照创建、恢复、存储格式和跨平台兼容性等方面的特点,帮助大家更好地理解这些搜索引擎的差异,从而选…

管理项目更高效:顶级进度管理系统大比拼

国内外主流的10款项目进度管理网站对比:PingCode、Worktile、滴答清单(TickTick)、Todoist、NarTick、Teambition、Monday.com、Asana、ClickUp、Trello。在选择合适的项目进度管理工具时,许多项目经理面临着如何找到既能满足团队需求又易于操作的系统的难题。市场上众多的…

05 详细的中断讲解

目录前言一、什么是中断二、如何使用中断1.stm32中断结构1.1 AFIO中断引脚选择1.2 EXTI边缘检测1.3 NVIC优先级配置2.配置stm32的中断1.打开时钟2.配置GPIO口3.配置AFIO控制4.配置EXTI功能5.配置NVIC6.配置完整代码3.书写中断服务函数总结 前言 又鸽了几天的文章,最近在做一个…

VS2022创建C C++ GTEST工程

原因 需要对带代码进行单元测试,选择在Visual studio 中使用GTEST 框架。 实施 创建一个常规的控制台可执行程序。然后使用NUGET安装包 安装GTEST 头文件和动态库,同时安装GTEST ADAPTER。安装可能提示找不到包源,此时需要根据提示配置一下,注意通配符很关键,不要问为甚吗…

攻防世界-简单的图片

攻防世界-简单的图片 1 首先拿到图片是一张非常朴实的图片用010打开发现没什么特别之处因为是png图片猜测是lsb隐写,这里一开始我用的zsteg发现提取不全用Stegsolve打开看看,尝试了半天发现什么特殊信息,最后发现位平面顺序即bit plane order这一选项要选择BGR,得到下图发现…

Logisim-006-2路选择器16位

仓库地址 https://gitee.com/gitliang/logisim-to-cpu

安装系统时没有网络无法完成设置进入系统

按下键盘上的 shift+f10 打开 命令提示符。在命令提示符中输入: oobe\bypassnro 然后按下回车(Enter按键),将重启电脑。根据指引进行设置。进行到下述界面时点击“我没有Internet链接”。然后点击“继续执行受限设置”。根据指引完成设置,进入系统。出处:微软社区问答 h…