无字天书之Python第十二页(迭代器基础)
博客目录
- 传送门
- 迭代器
传送门
无字天书之Python第一页
无字天书之Python第二页
无字天书之Python第三页
无字天书之Python第四页
无字天书之Python第五页
无字天书之Python第六页
无字天书之Python第七页
无字天书之Python第八页
无字天书之Python第九页
无字天书之Python第十页
无字天书之Python第十一页
迭代器
迭代器可以简单的理解为for循环,Python除了for循环为我们准备了另一种访问集合元素的方式
特点
- 可以记住遍历的位置的对象。
- 迭代器从集合的第一个元素开始访问,直到所有的元素访问结束。
- 迭代器只能向前不能后退。
但是判断一个对象是否有迭代器除了看它能不能使用for循环外.Python也为我们提供了专业的方法isinstance()
我们可以使用isinstace()
来判断当前对象是否可以迭代
使用前需要导入迭代器模块。
from collections.abc import Iterable
这里有一个小点注意一下,当我们在引入 Iterable 的时候,在之前的版本引入方式都是 from collections import Iterable
,然而在Python3.8之后是使用from collections.abc import Iterable
迭代器中,最重要的方法一定是 next() ,从名字上就能看出来,它的作用是下一个。
我们现在在尝试一个列表
list1=[1,2,3,4]
next(list1)
结果:
# Traceback (most recent call last):
# File "E:/Python/DataType/twelve.py", line 11, in <module>
# next(list1)
# TypeError: 'list' object is not an iterator
不是说好的列表是可以迭代的么,为什么又报错了。
这位同学,先消消气,看看报错信息说的是啥,这是在提示我们列表并不是一个迭代器。
所以,可迭代对象不一定是迭代器!
我们导入 Iterator
模块,先将列表转换成迭代器,再试试看。
list1=iter(list1)
print(type(list1))
print(next(list1))
print(next(list1))
print(next(list1))
print(next(list1))
结果:
<class 'list_iterator'>
1
2
3
4
但是当我们列表的元素迭代完后再迭代一次会报错
Traceback (most recent call last):File "E:/Python/DataType/twelve.py", line 21, in <module>print(next(list1))
StopIteration
看到了咯,会抛出 StopIteration 的异常。
可能看到这里,大家还是感觉迭代器没什么用,下面我再来举个例子,如果我们现在有一个 set 集合,我想要获取一个一个 set 集合中的元素,这时迭代器就派上用场了,因为在 set 集合中,是没有索引的,如果想要取到某个值,就只能使用 for 循环整个集合,但是有了迭代器以后,我们就无需循环整个集合了。
除此之外,迭代器有一个非常巨大的优势是在迭代之前,无需准备好所有的元素,迭代器仅在迭代到某个元素的时候才开始计算这个元素,在这之前或者之后,元素是可以不存在或者被销毁的。
这个特性使得它在遍历一些体积巨大的集合的时候,具有非常大的优势。
无字天书之Python第十二页(迭代器基础)相关推荐
- 无字天书之Python第十五页(Excel表格操作)
博客内容 传送门 正文读 正文写 到此Python基础就此结束- 传送门 无字天书之Python第一页 无字天书之Python第二页 无字天书之Python第三页 无字天书之Python第四页 无字天 ...
- 无字天书之Python第十四页(time和calendar模块)
博客目标 传送门 time模块 常用time模块中方法 calendar 到这里无字天书之Python基础算是快要结束了-(有可能还有下一篇基础篇操作) 感谢各路神仙的学习和陪伴... 未完待续-关注 ...
- 零基础入门学Python(十二)—— 魔法方法(下)
零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(下) 1. 构造和析构 2. 算术运算 3. 简单定制 4. 属性访问 5. 描述 ...
- 零基础入门学Python(十二)—— 魔法方法(上)
零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(上) 1. 构造和析构 1.1 _ _ init _ _(self[, ...]) ...
- Python自动化(十二):一分钟搞定几百个Excel中查找的数据
一.需求说明 首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立新表,每天的表格内包含所有档案信息,同时也有可能会添加新的档案名.同个年度的总表在年末可能会有两. ...
- 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
- 转 Python爬虫入门二之爬虫基础了解
静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以 ...
- 第三十二章 XML基础知识概念
文章目录 第三十二章 XML基础知识概念 attribute CDATA区域 comment content model default namespace DOM DTD(文档类型定义) eleme ...
- Python面向对象之二:面向对象基础
Python面向对象之二:面向对象基础 一.面向对象介绍 通过一个例子引入对面向对象思想的理解: 假设自己是如来佛祖,想找四个人去西天取经,于是便找了四个人,但是这四个人没有明显的长相特点,于是就给一 ...
最新文章
- jQuery学习(第一天)
- 【C++】 15_类于封装的概念
- BUUCTF(misc)变异凯撒 --二
- MongoDB架构图解
- 什么是Adobe Lightroom,我需要它吗?
- tableview 图片缓存
- 百度搜索引擎关键字URL采集爬虫优化行业定投方案高效获得行业流量-笔记篇
- 教务管理系统数据字典mysql_数据库课程设计报告--教务管理系统设计
- 低功耗电波钟的制作 - 电子设计竞赛
- 标识解析数据网关IDG S800发布上线
- 华中科技大学计算机启明班,华中科技大学启明学院创新实验班管理办法
- windows能装linux系统盘,用U盘安装linux系统(Windows环境下制作启动盘)
- idea启动springboot项目控制台报错Command line is too long. Shorten command line for xxx or also for Spring B解决
- 企业微信应用开发(JS-SDK网页式开发)第一集:创建应用以及配置可信域名
- 皖舒医疗告诉你医疗级制氧机具备哪些特性
- 比基尼新娘沉醉花海之爱。(组图)
- 酷冷战神 先手致胜:腾讯ROG游戏手机6为游戏而生
- 美国临床营养专家:冬季营养建议
- 电脑重装系统怎么清理c盘空间
- UE-Vs转Rider for UE