Python利器之迭代器

各位小伙伴们

大家周四愉快

今天要和大家探讨一个

Python的特色功能

也是Python有别于其他变成语言的

强大利器

迭代器

迭代这一个词可能有的小伙伴不理解

什么是迭代呢?

迭代可以理解成

重复工作

有好多小伙伴说

重复工作

那不是

循环吗?

没错,迭代确实是循环的一种

但是循环讲究的是

重复、往复同一个动作

而迭代除了要重复之外

可以干一些不是那么相同的工作

例如我们熟知的

斐波那契函数

就存在一种迭代的概念

好了,那么Python中的迭代器

具体有什么作用呢?

迭代器被Python用作一种

集合元素的访问方式

迭代器的特性如下:

迭代器可以记住目前访问元素的位置

迭代器从集合/序列的第一个元素开始访问,直到访问到最后一个元素为止

迭代器只能顺序访问,不能逆序访问

各位小伙伴,如果你们学习过C语言

那么迭代器有点类似C语言的指针

但是迭代器比指针要更加的

灵活

易于使用

迭代器包含两个方法

Iter()

Next()

为了让大家更加直观的看到

迭代器的工作原理

请看下面的例子

我们可以看到

使用

Iter()创建一个迭代器

之后就可以用next()方法

一个一个输出序列中的内容

好多小伙伴会问

这样有什么实际意义呢?

如果我用一个for循环控制

也是可以做到一个一个输出的呀

但是不要忘了

for循环在输出序列的时候

是连续的

也就是说,如果要取出for循环中的

某一个位置的值去做一些事情

那这些冗长的代码都要包含到一个

for循环控制块中

这将会带来很多问题

比如

代码的逻辑抽象结构过于复杂

最重要的

for循环和迭代器

所占用的系统资源是不同的

这在做海量数据计算的时候非常介意

(这些内容我们将在高级课程中阐述)

好多小伙伴可能还会有一个问题

那就是

如上面代码所示

我是知道一个序列里面有多少个元素的

那对于不知道有多少个的

我怎么知道什么时候取到最后呢?

那我们来做一个实验

把上面代码进行改进

我们可以看到

在取出第四个元素的时候

程序抛出了一个异常

#对于已经是程序设计师的你们

#就不要用“报错”这个业余词汇了

#我们业内的词语叫:异常

这下可就有的玩了

那岂不是所有的迭代器

到最后

都会有异常?

其实不是的

程序语言已经帮我们想好了

解决办法

那就是

异常的处理

这里只是先告诉大家

不要惊慌

是有办法妥善处理这些

异常的

我们将在后面讲

异常的时候

会和大家有个交代

好了,今天的课程就到这

希望大家真正理解迭代器的原理

和他存在的意义!

我们下期再见!

各位亲爱的们,如果您觉得这篇文章还不错,请进行转发,知识的进步需要共享。

如果您觉得本公众号对您来说能有点作用,请长按下方二维码进行关注!谢谢!(鞠躬)

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小樱的经验随笔

Vijos P1785 同学排序【模拟】

同学排序 描述 现有m位同学,第1位同学为1号,第2位同学为2号,依次第m位同学为m号。要求双号的学生站出来,然后余下的重新组合,组合完后,再次让双号的学生站出...

2704
来自专栏灯塔大数据

每周学点大数据 | No.8基础数据结构之线性表

No.8期 基础数据结构之线性表 Mr. 王:为了以后的知识描述方便,这里简单介绍一下数据结构的概念。数据结构是一个广泛存在于计算机科学中的概念。曾经有一位计...

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

【编程基础】main函数,你知道多少?

近期学习时对这个问题产生了迷惑,看到了这篇文章,感觉挺好。 在C/C++的学习过程中,一个很常见的问题就是void main和int main有什么区别呢?本文...

3598
来自专栏阿凯的Excel

Python读书笔记23(浅谈为什么要用类)

题外话:好几个朋友和我提出最好能写一个Python入门的合集版,我会尽快将基础知识分享完,然后重新整理一下过去分享的所有材料。 如果只是想学P...

3666
来自专栏take time, save time

你所能用到的数据结构(八)

十一、不能被应用的理论不是好研究 前面介绍了堆栈的一些小小的理论模型,那么这样一个东西有什么作用呢?实际中不可能有那么一辆停在站台前方堵死的火车的,即使有,也...

2724
来自专栏北京马哥教育

Python 工匠:善用变量来改善代码质量

1608
来自专栏鹅厂优文

Python 工匠:善用变量来改善代码质量

我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。

99910
来自专栏zaking's

js算法初窥03(搜索及去重算法)

1292
来自专栏JAVA高级架构开发

Java 程序员必须掌握的 8 道数据结构面试题,你会几道?

瑞士计算机科学家Niklaus Wirth在1976年写了一本书,名为《算法+数据结构=编程》。

2.2K0
来自专栏程序员互动联盟

【专业技术】如何写出优美的C 代码?

面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可维护性,传统的 C 代码同样可以设计出比较易读,易维护,复杂度较...

3439

扫码关注云+社区

领取腾讯云代金券