Python编程技巧 – 迭代器(Iterator)

Python编程技巧 – 迭代器(Iterator)

By Jackson@ML

Iterator(迭代器)是Python语言的核心概念之一。它常常与装饰器和生成器一道被人们提及,也是所有Python书籍需要涉及的部分。

本文简要介绍迭代器的功能以及实际的案例,希望对广大读者和学生有所帮助。

1. 迭代器概念

迭代器有时会被误以为可迭代对象。其实,迭代器是一个对象(Object), 它可以逐个地生成一系列的值。

下面先看一个列表(List)的遍历示例。

lst = ['China','Russia','Vietnam','Korea','Germany','France','Brasil']

for i in lst:
    print(i)

执行结果如下图所示:
在这里插入图片描述
显而易见,列表是可以迭代的。但并非所有迭代器都仅仅是列表。

现实中,有许多函数(例如:reversed)会产生出非列表的迭代器。

迭代器是一种无法以现有方式直接进行索引或输出的对象。

看以下迭代器代码示例:

iter1 = reversed([1, 2, 3, 4])
print(iter1)

执行结果如下图所示:
在这里插入图片描述
打印输出的是该对象(反向迭代器)的地址,并非列表的值。

上述代码可以将迭代器转换为列表,然后再次输出,或者做其它操作。添加下面代码到程序:

print(list(iter1))

执行结果如下图所示:

在这里插入图片描述

2. 遍历迭代器

Python中的迭代器常与for循环语句一起使用。例如,iter1是一个迭代器,以下代码运行良好:

iter1 = reversed([1, 2, 3, 4])
for i in iter1:
    print(i, end=' ')
    

执行结果如下图所示:

在这里插入图片描述

迭代器自身具有状态信息监控机制。当迭代到达序列末尾时,该迭代器将耗尽。

此时,如果再次使用iter1而不重置,它将不再产生任何其它值。

3. 迭代器模式

迭代器除了作为对象,处理数据之外,还形成了面向对象编程的一个流行模式,即迭代器模式

用设计模式广泛流行的述语来讲,迭代器就是一个拥有next()和done()方法的对象,后者在序列中没有其它元素时,返回True.

在没有内置支持迭代器的编程语言中,也许迭代器的遍历过程看起来像下面这样:

while not iterator.done():
	item = iterator.next()
# other operations to item

在Python编程语言中,迭代是一个特殊的特征,因此,这个方法有个特殊名称:next, 这一方法可以通过内置的next(iterator)函数访问。

当遍历结束时,迭代器协议会抛出异常StopIterator,而不是通过done方法。

技术不断演进,博客也会不断创新跟进,敬请关注。

喜欢就点赞哈,您的认可,我的动力!😊

相关阅读:

  1. Python编程技巧 - Lambda函数
  2. Python编程技巧 - 使用字典(Dictionary)
  3. Python编程技巧 - 使用字符串(Strings)
  4. Python编程技巧 - 对象和类
  5. Python编程技巧 - 使用列表(List)
  6. Python编程技巧 - 转换二进制、八进制和十六进制的函数
  7. Python编程技巧 - 函数入门
  8. 安装最新版Visual Studio Code来开发Python应用程序
  9. 安装2023最新版PyCharm来开发Python应用程序
  10. 2023最新版Python 3.12.0安装使用指南

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5改进 | 添加ECA注意力机制 + 更换主干网络之ShuffleNetV2

前言:Hello大家好,我是小哥谈。本文给大家介绍一种轻量化部署改进方式,即在主干网络中添加ECA注意力机制和更换主干网络之ShuffleNetV2,希望大家学习之后,能够彻底理解其改进流程及方法~!🌈 目…

使用idea如何快速的搭建ssm的开发环境

文章目录 唠嗑部分言归正传1、打开idea,点击新建项目2、填写信息3、找到pom.xml先添加springboot父依赖4、添加其他依赖5、编写启动类、配置文件6、连接创建数据库、创建案例表7、安装MybatisX插件8、逆向工程9、编写controller10、启动项目、测试 结语 唠嗑部分 小…

剪切空间与归一化设备坐标【NDC】

有了投影变换的知识,我们现在可以讨论剪切空间(Clip Space)和 归一化设备坐标(NDC:Normalized Device Coordinates)。 为了理解这些主题,我们还需要深入了解齐次坐标的有趣世界。 NSDT工具推荐&…

解决:UnboundLocalError: local variable ‘js’ referenced before assignment

解决:UnboundLocalError: local variable ‘js’ referenced before assignment 文章目录 解决:UnboundLocalError: local variable js referenced before assignment背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使…

Python、Stata、SPSS怎么学?推荐一波学习资料

1.Python学习推荐书目 关于Python机器学习,推荐学习杨维忠、张甜所著的,清华大学出版社出版的《Python机器学习原理与算法实现》,以及张甜、杨维忠所编著的,清华大学出版社出版的《Python数据科学应用从入门到精通》,…

柯桥英语口语学习,日常生活用语军大衣用英语怎么说?

那么军大衣跟羽绒服用英语怎么说呢? 跟商英君一起学习一下吧! 01 "军大衣"用英语怎么说? 军大衣在英语表达中 也有专门的词汇 即military coat 或 military style cotton coats military有“军人、军事;军事的、军用的…”的…

【Java Web学习笔记】3 - JavaScript入门

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/javascript 零、JavaScript引出 JavaScript 教程 官方文档 1. JavaScript能改变HTML内容&#xff0c;能改变HTML属性&#xff0c;能改变HTML样式(CSS),能完成页面的数据验证。 <!DOCTYPE html>…

notepad ++ 用法大全【程序员必会高级用法】

目录 1&#xff1a;notepad 介绍 2&#xff1a; 快捷键 3&#xff1a; notepad 实用插件 1&#xff1a;notepad 介绍 notepad是一款免费且开源的文本编辑器&#xff0c;可运行在Windows系统上。它支持多种编程语言&#xff0c;包括C、C、Java、Python等等。Notepad具有许多实…

1949-2021年全国31省铁路里程数据

1949-2021年全国31省铁路里程数据 1、时间&#xff1a;1949-2021年 2、指标&#xff1a;时间、省份、铁路里程 3、范围&#xff1a;包括31省 4、数据缺失情况说明&#xff1a;西藏2005年之前存在缺失&#xff0c;其余30省份1978-2020年无缺失 5、来源&#xff1a;各省统计…

Python生产者消费者模型

额滴名片儿 &#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;如喜欢麻烦您点个&#x1f44d;或者点个⭐&#xff01…

反序列化漏洞详解(三)

目录 一、wakeup绕过 二、引用 三、session反序列化漏洞 3.1 php方式存取session格式 3.2 php_serialize方式存取session格式 3.3 php_binary方式存取session格式 3.4 代码演示 3.5 session例题获取flag 四、phar反序列化漏洞 4.1 phar常识 4.2 代码演示 4.3 phar例…

KDE环境文件夹user-dirs为英文

KDE环境文件夹user-dirs 修改KDE主页文件夹为英文 该文件路径 ~/.config/user-dirs.dirs打开后会发现里面的内容如下 # This file is written by xdg-user-dirs-update # If you want to change or add directories, just edit the line youre # interested in. All local …

XSS漏洞原理

XSS漏洞介绍&#xff1a; 跨站脚本攻击XSS(Cross Site Scripting)&#xff0c;为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页面时&#xff0c;嵌入We…

SpringMVC常用注解和用法总结

目标&#xff1a; 1. 熟悉使用SpringMVC中的常用注解 目录 前言 1. Controller 2. RestController 3. RequestMapping 4. RequestParam 5. PathVariable 6. SessionAttributes 7. CookieValue 前言 SpringMVC是一款用于构建基于Java的Web应用程序的框架&#xff0c;它通…

3dMax拼图生成工具Puzzle2D使用教程

Puzzle2D for 3dsMax拼图生成工具使用教程 Puzzle2D简介&#xff1a; 2D拼图随机生成器&#xff08;英文&#xff1a;Puzzle2D&#xff09; &#xff0c;是一款由#沐风课堂#用MAXScript脚本语言开发的3dsMax建模小工具&#xff0c;可以随机创建2D可编辑样条线拼图图形。可批量…

3、在链式存储结构上建立一棵二叉排序树。

3、在链式存储结构上建立一棵二叉排序树。 分析&#xff1a; &#xff08;1&#xff09;定义二叉排序树的结点。 &#xff08;2&#xff09;插入操作&#xff1a;在建立二叉排序树的过程中&#xff0c;需要一个插入操作&#xff0c;用于将新的元素插入到树中。 插入操作的核心思…

openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表

文章目录 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表140.1 相关概念140.2 操作步骤140.3 维护建议 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表 为了保证数据库的有效运行&#xff0c;数据库必须在插入/删除操作后&#xff0c;基于…

P-Tuning v2论文概述

P-Tuning v2论文概述 P-Tuning v2论文概述前言微调的限制性P-Tuning的缺陷P-Tuning v2 摘要论文十问NLU任务优化点实验数据集预训练模型实验结果消融实验 结论 P-Tuning v2论文概述 前言 微调的限制性 微调&#xff08;fine-tuning&#xff09;是一种在预训练模型基础上进行目…

【Docker】容器数据持久化及容器互联

一、Docker容器的数据管理 1.1、什么是数据卷 数据卷是经过特殊设计的目录&#xff0c;可以绕过联合文件系统&#xff08;UFS&#xff09;&#xff0c;为一个或者多个容器提供访问&#xff0c;数据卷设计的目的&#xff0c;在于数据的永久存储&#xff0c;它完全独立于容器的…

获取所有的 font-awesome图标, 用于本地选择使用

访问 font-awesome 首页 Font Awesome 4.7.0 675款图标,Font Awesome,奥森图标,Font Awesome 4.7.0,Font Awesome中文站,Font Awesome IE7兼容处理,Font Awesome图标搜索,Font Awesome中文站-ThinkCMF 调出控制台 , 执行下面的脚步 // 获取所有的图标元素 var icons docu…
最新文章