博客目录

  • 传送门
  • 迭代器

传送门

无字天书之Python第一页
无字天书之Python第二页
无字天书之Python第三页
无字天书之Python第四页
无字天书之Python第五页
无字天书之Python第六页
无字天书之Python第七页
无字天书之Python第八页
无字天书之Python第九页
无字天书之Python第十页
无字天书之Python第十一页

迭代器

迭代器可以简单的理解为for循环,Python除了for循环为我们准备了另一种访问集合元素的方式

特点

  1. 可以记住遍历的位置的对象。
  2. 迭代器从集合的第一个元素开始访问,直到所有的元素访问结束。
  3. 迭代器只能向前不能后退。

但是判断一个对象是否有迭代器除了看它能不能使用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第十二页(迭代器基础)相关推荐

  1. 无字天书之Python第十五页(Excel表格操作)

    博客内容 传送门 正文读 正文写 到此Python基础就此结束- 传送门 无字天书之Python第一页 无字天书之Python第二页 无字天书之Python第三页 无字天书之Python第四页 无字天 ...

  2. 无字天书之Python第十四页(time和calendar模块)

    博客目标 传送门 time模块 常用time模块中方法 calendar 到这里无字天书之Python基础算是快要结束了-(有可能还有下一篇基础篇操作) 感谢各路神仙的学习和陪伴... 未完待续-关注 ...

  3. 零基础入门学Python(十二)—— 魔法方法(下)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(下) 1. 构造和析构 2. 算术运算 3. 简单定制 4. 属性访问 5. 描述 ...

  4. 零基础入门学Python(十二)—— 魔法方法(上)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(上) 1. 构造和析构 1.1 _ _ init _ _(self[, ...]) ...

  5. Python自动化(十二):一分钟搞定几百个Excel中查找的数据

    一.需求说明 首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立新表,每天的表格内包含所有档案信息,同时也有可能会添加新的档案名.同个年度的总表在年末可能会有两. ...

  6. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  7. 转 Python爬虫入门二之爬虫基础了解

    静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以 ...

  8. 第三十二章 XML基础知识概念

    文章目录 第三十二章 XML基础知识概念 attribute CDATA区域 comment content model default namespace DOM DTD(文档类型定义) eleme ...

  9. Python面向对象之二:面向对象基础

    Python面向对象之二:面向对象基础 一.面向对象介绍 通过一个例子引入对面向对象思想的理解: 假设自己是如来佛祖,想找四个人去西天取经,于是便找了四个人,但是这四个人没有明显的长相特点,于是就给一 ...

最新文章

  1. jQuery学习(第一天)
  2. 【C++】 15_类于封装的概念
  3. BUUCTF(misc)变异凯撒 --二
  4. MongoDB架构图解
  5. 什么是Adobe Lightroom,我需要它吗?
  6. tableview 图片缓存
  7. 百度搜索引擎关键字URL采集爬虫优化行业定投方案高效获得行业流量-笔记篇
  8. 教务管理系统数据字典mysql_数据库课程设计报告--教务管理系统设计
  9. 低功耗电波钟的制作 - 电子设计竞赛
  10. 标识解析数据网关IDG S800发布上线
  11. 华中科技大学计算机启明班,华中科技大学启明学院创新实验班管理办法
  12. windows能装linux系统盘,用U盘安装linux系统(Windows环境下制作启动盘)
  13. idea启动springboot项目控制台报错Command line is too long. Shorten command line for xxx or also for Spring B解决
  14. 企业微信应用开发(JS-SDK网页式开发)第一集:创建应用以及配置可信域名
  15. 皖舒医疗告诉你医疗级制氧机具备哪些特性
  16. 比基尼新娘沉醉花海之爱。(组图)
  17. 酷冷战神 先手致胜:腾讯ROG游戏手机6为游戏而生
  18. 美国临床营养专家:冬季营养建议
  19. 电脑重装系统怎么清理c盘空间
  20. UE-Vs转Rider for UE

热门文章

  1. php考研大学,2019考研:49所院校公布研究生招生简章及专业目录
  2. 也说白鹿原--白家发家史
  3. uniapp中背景颜色使用scss变量不生效
  4. 文具店别样的玩法,利用“一张海报”做到年赚95万,方法值得借鉴
  5. Android ConstraintLayout 扁平化布局入门
  6. FFmpeg从入门到入魔(4):OpenSL ES播放PCM音频
  7. Windows Bochs没有进入debug界面
  8. java反编译字节码
  9. 结对编程项目-四则运算答题器-设计文档
  10. Android RIL简介