| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> python中的迭代器 -> 正文阅读 |
|
[Python知识库]python中的迭代器 |
????????作为一个被学校老师水到不得了(外加上课好好自学被扣表现分等一系列令人。。。的事)的新手小白,总是被迫自己通过查资料和整理来巩固知识。 ????????哎,命苦啊,希望大家都能碰上好老师吧。 ????????这是第一篇发表的博客吧,大多也来自于自己日常的了解与整理,希望对于更多想要了解Python中迭代器的同学有所帮助,如果觉得不戳,也希望得到大家的肯定与支持。当然,犯错了也希望得到大家的纠正,共同进步嘛。(老师不好就靠网上的大佬!) ? ? ? ? ????????首先,什么是迭代器? ? ? ? ? 是访问集合元素的一种方式。 ? ? ? ? 当然,不只是集合啦,列表,字符串,元组还有字典对象都可用于创建迭代器。 如下图: ? ?
?(上图用字典对象来创建迭代器输出结果竟然只有键!且不是乱序!)
(上图用value和循环来弄可以弄出值来,但是感觉有点小麻烦) 至于能不能弄出键-值对,怎么弄出来,我只能说:I’m so vegetable!(手动一个滑稽) 过会再想想吧,弄出来会补充的,当然欢迎大佬教学,评论区见! 当然,‘lt’是可以用循环遍历的。(上面那个字典的值那里也用了,但是感觉效果不太好。) ? ? ? ? ?不过如果是字典的话应该是无序的吧,原因这里就不详述了(懒了,哈哈哈) 好了,如果你也是个新手小白,看完上面几张图一定会感到疑惑,iter()和next()是什么?怎么用? ? ? ? ? 这么说吧,要把对象/类创建为迭代器,必须为对象实现?__iter__() 。 ? ? ? ? 如果你学过面向对象你就会知道,所有类都需要一个__init__()?的函数,它使您在创建对象时进行一些初始化。 ????????__iter__()?方法的作用与__init__()相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。 ????????__next__()?方法也允许您执行操作,并且必须返回序列中的下一个项目,差不多就是用来遍历的,可以理解为手动的for循环吧,一个一个地输出。? ? ? ?? ? ? ? ? 来来来,划重点,__iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法。 ? ? ? ? 简单说,先def __iter__(),再def__next__()。 下图是网上比较经典的例子(意思就是这代码基本上是我ctrl+c和ctrl+v的,当然要修改一点点的啦):
? 输出结果(自己换行哈,这里为了好看就不严谨一波了):1,2,3 ? ? ? ? 有一个问题哈: ????????如果我们的__next__()方法过多或者我们再for循环中使用,可能造成无限循环的情况出现,怎么办呢? ????????在?__next__()?方法中,如果迭代完成了一定的次数,我们可以主动抛出一个异常来引发错误,从而终止循环。而这个异常,叫做StopIteration。 ? ? ? ? 而主动抛出异常,需要使用raise。 ? ? ? ? 简言之,作用与break相似。 下图又是一个经典样例(是的,我懒病又犯了,所以又从网上“整理”了一份代码,哈哈哈):
当通过迭代器输出的数超过13,就会因为触发StopIteration异常而停止继续运行。 最后进行一下对于python中迭代器的总结吧。 可以被next()调用,不断返回下一个值的对象称为迭代器 使用迭代器不要求事先准备好整个迭代过程中的所有元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后元素可以不存在或者被销毁。因此迭代器适合遍历一些数量巨大甚至无限的序列。使用迭代器不仅节省内存空间,也可以显著提升代码运行速度。 迭代器通过方法__iter__()进行创建,可以用for循环与方法__next__()进行遍历 本文构成:网上到处借鉴+自我整理与理解,相当于自己的一份公开笔记吧 小白发文,多有缺陷,望指点与建议,会一直努力上进的。 若对你有帮助,十分高兴,也希望得到你的支持(懂的都懂,对吧?)。 生成器之后也肯定会写的,找时间吧。 ??????Python3 迭代器与生成器 | 菜鸟教程 (runoob.com) 挺好的网站,挺适合像我这样的新手用来自学的,本文中部分资料来自于此。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 2:15:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |