技术 | Python从零开始系列连载(十八)

迭代器

1

可迭代对象

可迭代对象:在之前学习的基础上,可以简单的理解为可以用for循环遍历的,如学过的list tuple dict set str

判断一个对象是否是迭代器:

除了写for循环试试,我们还有专业的手段~

我们可以将数据类型和是否为可迭代对象比较来判断是否是可以迭代~

发现整型是不能迭代的~

2

迭代器

迭代器:一定是可迭代对象,拥有next()方法

next()方法可以获取迭代器的下一个元素

我们试着对 list 使用 next()方法,发现抛出异常,提示list不是一个迭代器!

所以可迭代对象不一定是迭代器!

我们导入Iterator模块

使用iter方法将list转为了一个迭代器!

然后我们使用next()获取迭代器下一个对象:

当获取完之后,再次获取下一个会抛出异常!

小明:老湿,你说这个迭代器有啥用啊,感觉华而不实!

额,小明啊,迭代器是有很多优点的,比如,我想访问集合中一个元素,你会怎么做?

小明:看我的!

小明啊,如果我要获取一个集合中的元素呢?

小明:这个。。这个。。集合没有索引啊,你不是难为我么?!

所以,这不就是迭代器的优点了么!

看好了:

小明:老湿,在迭代器集合中,如果我想获取前一个元素怎么办?

小明啊,这个问题问得好,这也是迭代器的特点,他只能往后next(),不能回退

除此之外,迭代器还有一大优点是不要求事先准备好整个迭代过程中所有的元素

迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁

这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件

所以有点像内存,我们把正在运行的程序放进内存,运行完就突出内存,每次只放正在运行的进入

充分体现了局部性原理~

小明:我好像懂了!小红,你还不太懂吧,放学我请你吃饭,给你讲讲吧【自信脸】

小红:emmm,我早懂了【高冷脸】

今天作业:

1.自己创建list tuple dict set str int float bool 类型数据,然后判断是否是可迭代对象

2.将1中的可迭代对象转为迭代器,使用next()方法迭代操作

自己不敲代码永远学不会写代码

下课

人生苦短,我选Python

未完待续,连载中......

文章来源:Python爱好者社区

文章编辑:小柳

往期文章:

技术 | Python从零开始系列连载(十八)

技术 | Python从零开始系列连载(十七)

技术 | Python从零开始系列连载(十六)

技术 | Python从零开始系列连载(十五)

技术 | Python从零开始系列连载(十四)

技术 | Python从零开始系列连载(十三)

技术 | Python从零开始系列连载(十二)

技术 | Python从零开始系列连载(十一)

技术 | Python从零开始系列连载(十)

技术 | Python从零开始系列连载(九)

技术 | Python从零开始系列连载(八)

技术 | Python从零开始系列连载(七)

技术 | Python从零开始系列连载(六)

技术 | Python从零开始系列连载(五)

技术 | Python从零开始系列连载(四)

技术 | Python从零开始系列连载(三)

技术 | Python从零开始系列连载(二)

技术 | Python从零开始系列连载(一)

原文发布于微信公众号 - 灯塔大数据(DTbigdata)

原文发表时间:2018-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏chenssy

如何 “干掉” if...else

if...else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if...else。虽然 if...else 是必须的,但滥用 if......

13120
来自专栏点滴积累

《类型编程晋级——shapeless类库使用指南》前言及第一章翻译

从年初开始进行此项工作,我和合作伙伴包亮付出了大量而艰辛的劳动。翻译中我们本着能够让所有人看明白、看懂的目的,反复修改高达五次。现基本翻译完毕,有出版意向,如果...

45280
来自专栏小文博客

蓝桥杯 C语言省赛 习题1 奖券数目

17620
来自专栏陈纪庚

一道面试题引起的思考

今天在认真干(划)活(水)的时候,看到群里有人发了一道头条的面试题,就顺便看了一下,发现挺有意思的,就决定分享给大家,并且给出我的解决方案和思考过程。

9930
来自专栏程序员互动联盟

【编程基础第五讲】java面向对象思想如何理解?

存在的疑惑: 如何理解面向对象的思想? 解决方案: 比如说,我们要用程序来描述一个人。如果是以往的结构化编程,我们可能会这样; 例如用C语言的话,可能会建立一个...

30040
来自专栏我是攻城师

Scala里面如何使用break和continue

32430
来自专栏老九学堂

【学习】Java微课堂之while语句

主要知识点 ? ? 循环注意要点 此讲视频中涉及到同学们刚接触循环时候,会在用循环的时候while(布尔表达式)后面直接写分号,也就是循环条件为真的时候,会执行...

31640
来自专栏IT派

真疯了!Java 9 还没会用,Java 10 就要来了!

2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次,随后,Oracle发言人Donald Smith在他的博客中确认了这一消息。该决定将在...

40770
来自专栏Phoenix的Android之旅

什么是策略模式

策略模式应该是Java设计模式中最简单的一种模式, 它的核心思想是,一个类的行为可以在运行时动态改变,有不同的实现逻辑。

9430
来自专栏老九学堂

学习C语言的用途以及如何快速掌握C语言

C是基础的语言 被广泛用于操作系统和编译器的开发 功能非常强 虽然现在不是最流行但它是 最基础的东西 也是比较好学的语言 如:金山的创始人江明 从30...

45470

扫码关注云+社区

领取腾讯云代金券