【Python入门教程】第36篇 可遍历对象与迭代器
本篇我们介绍 Python 中的可遍历对象(iterable)与迭代器(iterator),以及它们之间的区别。
可遍历对象
在 Python 中,可遍历对象是指包含零个、一个或者多个元素的对象。
可遍历对象支持一次返回一个元素,因此我们可以使用 for 循环遍历这类对象。
实际上,range() 函数就是一个可遍历的对象,因为我们可以遍历它的结果:
for index in range(3):print(index)
输出结果如下:
0
1
2
同理,字符串也是一种可遍历对象,因为我们可以使用 for 循环遍历字符串:
str = 'Iterables'
for ch in str:print(ch)
列表和元组也都是可遍历的对象,我们可以对它们进行遍历。例如:
ranks = ['high', 'medium', 'low']for rank in ranks:print(rank)
原则就是,如果某种对象可以遍历,它就是可遍历对象。
迭代器
可遍历对象可以进行迭代,迭代器(iterator)就是执行迭代操作时的代理对象。
如果想要获取可遍历对象的迭代器,可以使用 iter() 函数。例如:
colors = ['red', 'green', 'blue']
colors_iter = iter(colors)
一旦我们获得了迭代器,就可以利用 next() 函数获取可遍历对象中的下一个元素:
colors = ['red', 'green', 'blue']
colors_iter = iter(colors)color = next(colors_iter)
print(color)
输出结果如下:
red
每次调用 next() 函数都会返回可遍历对象的下一个元素。例如:
colors = ['red', 'green', 'blue']
colors_iter = iter(colors)color = next(colors_iter)
print(color)color = next(colors_iter)
print(color)color = next(colors_iter)
print(color)
输出结果如下:
red
green
blue
如果遍历完所有元素之后,再次调用 next() 函数,将会返回一个异常。
colors = ['red', 'green', 'blue']
colors_iter = iter(colors)color = next(colors_iter)
print(color)color = next(colors_iter)
print(color)color = next(colors_iter)
print(color)# 返回异常
color = next(colors_iter)
print(color)
以上示例首先会返回 colors 列表中的三个元素,然后抛出一个异常:
red
green
blue
Traceback (most recent call last):File "iterable.py", line 15, in <module>color = next(colors_iter)
StopIteration
迭代器是有状态的,意味着一旦我们使用了迭代器中的元素,它就不再存在。也就是说,一旦我们遍历完整个迭代器,它就会变成一个空的迭代器。如果我们再次遍历这个迭代器,它不会返回任何内容。
由于我们可以遍历迭代器,因此迭代器也是一种可遍历对象。这一点比较令人困惑。例如:
colors = ['red', 'green', 'blue']
iterator = iter(colors)for color in iterator:print(color)
输出结果如下:
red
green
blue
如果我们使用一个迭代器作为参数调用 iter() 函数,它会返回一个相同的迭代器。
我们会在后续课程中介绍如何创建可迭代对象。
总结
- 可遍历对象(iterable)是一种可以进行遍历的对象,它可以一次返回一个元素。
- 迭代器(iterator)是执行迭代操作时的代理对象。迭代器拥有状态,它也是一种可遍历对象。
- 使用 iter() 函数获取可遍历对象的迭代器,使用 next() 函数获取可迭代对象中的下一个元素。
【Python入门教程】第36篇 可遍历对象与迭代器相关推荐
- Python入门教程100天:Day09-面向对象进阶
面向对象进阶 在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息.为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程 ...
- python实现登录支付宝收能量_适合零基础人群学习的Python入门教程
适合零基础人群学习的Python入门教程学什么?小编为大家准备的Python学习教程,课程主要讲解:Python核心编程.Linux基础.前端开发.Web开发.爬虫开发.人工智能等内容. 对于初学者想 ...
- python语言入门教程-菜鸟学Python入门教程大盘点|7个多月的心血总结
原标题:菜鸟学Python入门教程大盘点|7个多月的心血总结 阅读本文大概需要5分钟 菜鸟学python已经写了70几篇,入门的教程已经快写完了,我把入门的文章整理了一下,下面是入门篇的一些总结,也是 ...
- python入门教程收藏_python入门教程:超详细保你1小时学会Python,快来收藏看看...
简介:简介(转发文章+私信[Python]获取资料方式)1.Hello world安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行 ...
- Linux Capabilities 入门教程--进阶实战篇
该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木
学习目标 了解魔法积木的使用--自定义函数 了解魔法积木的结果反馈--自定义函数返回值 了解魔法积木的原料传递--自定义函数传参 了解魔法积木的类型分类--类与对象 推荐 1.<备受好评的看得懂 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大
学习目标 了解对相似逻辑的简化编写--循环 推荐 1.<备受好评的看得懂的C语言入门教程> 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 >--(一)既然 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑
学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 推荐 1.<备受好 ...
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(三)使用初始魔法跟编程魔法世界打个招呼吧
学习目标 完成显示魔法的使用--输出print 完成传入魔法的使用--输入input 使魔法生效--运行python文件 目录 第一篇:<假如编程是魔法之零基础看得懂的Python入门教程 &g ...
最新文章
- 主流浏览器js 引擎内核市场份额attialx总结vOa9
- 关于javascript数据存储机制的一个案例。
- 给自己看的flex布局方法
- WebService开发
- JMS学习(1):MS基本概念
- About “PostMessage” SendMessage
- python 画蜘蛛_如何学习 R 绘图?
- 优秀的产品经理和一般的产品经理之间的区别
- 在不同浏览器都实用的各窗口大小获取方法
- fir低通滤波器c语言,大神教你:FIR与IIR低通滤波器的最简最快实现
- 你知道 FW 工程师 是做什么的吗?
- Win10 安装rational rose 7教程
- 【Git系列教程-5】Git多人协同工作时模拟代码冲突的产生 | 代码冲突解决方案
- 阴阳师服务器维护3月25日,《阴阳师》手游3月25日维护更新公告
- 关于获取安卓手机MAC地址的问题
- 类的成员函数指针和静态成员函数指针 调用成员函数***
- js获取当前日期及下一天日期
- Bluetooth技术学习笔记 ——HFP之Call
- 2022年氮气液化器市场前景分析及研究报告
- java学习记录十五:集合二Collections、Set、Map
热门文章
- 女孩晚睡的坏处有哪些
- Virtualbox 安装Win8 server2008 R2 等系统的时候错误 0xc0000225的解决办法
- python实现caj转pdf代码
- vSphere 性能优化方法 故障排错方法及工具总结(一)
- 叶罗丽颜值测试软件齐娜多少分,叶罗丽测试:选一双大长腿,测你的颜值在班里能排第几名?我是A...
- Acwing 3812.机器人走迷宫【全排列】
- 交互设计--用户头像的设计以及点击操作习惯
- 关于lstio服务网格介绍
- 3,4,5,6-四(9-咔唑基)-邻苯二腈,4CzPN cas:1416881-51-0光伏材料,齐岳定制
- Axure9 页面居中对齐