iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中的迭代器怎么创建
  • 368
分享到

Python中的迭代器怎么创建

2023-07-06 00:07:18 368人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python中的迭代器怎么创建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的迭代器怎么创建”文章能帮助大家解决问题。什么是迭代器什么是python迭代器呢? 举一个

这篇文章主要介绍“python中的迭代器怎么创建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的迭代器怎么创建”文章能帮助大家解决问题。

什么是迭代器

什么是python迭代器呢? 举一个最简单的例子:

list1 = ["pdudo","juejin","hello"]tuple1 = ("pdudo","juejin","hello")dict1 = {"name":"pdudo"}for i in list1:    print(i)for i in tuple1:    print(i)for i in dict1:    print(i)

这就是python迭代器,好了,讲完了,手工。

是的,使用for...in的方式,底层都是使用的是迭代器,你是不是之前写的时候,从来没有好奇过,为什么遍历不同的数据类型,都可以使用for...in通用呢?

弟弟我也是一样的,没有想过,为什么可以这样写。迭代器语法我们已经讲了,接下来,我们来剥开迭代器的面纱吧。

为什么需要迭代器

只要符合python迭代器条件的,都可以使用for...in来遍历元素,即: 使用相同的代码,遍历不同的数据容器。 我认为这是根本原因。

如果上述描述还不清晰的话,我们可以使用cpython来遍历一下数组字符串,就能清晰的了解了。

Python中的迭代器怎么创建

如上代码,是c语言遍历数组"pdudo","hello","juejin"和字符串pdudohellojuejin,我们需要自己写遍历条件的临界值。

而如何使用python来写呢? 来看下呢。

list1 = ["pdudo","hello","juejin"]char1 = "pdudohellojuejin"for v in list1:    print(v)for c in char1:    print(c)

只需要定义数组和字符串,而后使用for...in便结束了。

我想,如上例子,就足以证明为什么要使用迭代器的原因了,因为真的很爽。

迭代器是如何工作的

在经历了前2个段落的铺垫,我猜你肯定很想知道迭代器是如何工作的吧?现在它来了。

在使用for...in语句时,它会调用inter()对象,该函数会返回一个迭代器对象。该对象又定义了__next__()方法,该方法一次返回一个容器元素,当没有更多元素可以返回的时候,会抛一个StopIteration异常来表明for终止循环。

是不是还是不懂?没关系,我们再写一个案例来说明一下。

list1 = ["pdudo","hello","juejin"]it = iter(list1)print(next(it))print(next(it))print(next(it))print(next(it))

如上代码,定义了一个列表,其值为: "pdudo","hello","juejin",而后调用iter方法,它将返回一个迭代器,而后调用next方法来返回下一个元素,但是我们定义的列表长度为3,而调用了4次next方法,可见,最后一次会抛异常。

我们执行后,效果如下:

Python中的迭代器怎么创建

可见,和我们上述猜想的一致,在for...in语句中,也是调用inter()容器对象,使用__next__返回后续可迭代的对象,如此类推,直至遇到异常StopIteration,循环结束。

好了,知道迭代器是如何工作了吧? 那么,我们再抛出一个问题,看你能否接住呢? 如何判断一个数据类型是能够被迭代的呢?

如何创建一个迭代器

我们已经学会了如何使用迭代器,以及知晓了迭代器是如何工作的,本段落将介绍如何创建一个迭代器,在看这个之前,我们思考一个问题,如下代码是否会报错呢?

a = 9527for i in a:    print(i)

我们使用for...in来遍历一个int类型的数据。

如上代码,当然会报错,借此引出我们的知识点:什么样的数据类型才能被迭代呢?

是这样的,能否被迭代,取决于该方法是否有__iter__方法。

可以看下如下例子,我们自定义了一个迭代器,用于倒叙输出数据。

#!/bin/env pythonclass flashBack:    def __init__(self,list1):        self.data = list1        self.index = len(list1)-1    def __iter__(self):        return self    def __next__(self):        if self.index < 0:            raise StopIteration        val = self.data[self.index]        self.index = self.index - 1        return valdef main():    list1 = [1,2,3,4,5]    tuble1 = ("pdudo","juejin","hello")    for i in flashBack(list1):        print(i)    for i in flashBack(tuble1):        print(i)if __name__ == '__main__':    main()

执行后,结果为:

Python中的迭代器怎么创建

可见,创建一个迭代器,至少需要 __iter__方法 和 有__next__方法。

好了,有了这个基础案例,我们来写一个链表

#!/bin/env pythonclass node:    def __init__(self,val):        self.val = val        self.nextNode = Noneclass Lists:    def __init__(self,currentNodes):        self.currentNode = currentNodes    def __iter__(self):        return self    def __next__(self):        if self.currentNode is None:            raise StopIteration        v = self.currentNode.val        self.currentNode = self.currentNode.nextNode        return vdef main() :    node1 = Node(1)    node2 = Node(2)    node3 = Node(3)    node1.nextNode = node2    node2.nextNode = node3    for i in Lists(node1):        print(i)if __name__ == '__main__':    main()

如上代码,我们先创建节点Node,它有2个值,val是记录的值,而nextNode是记录下一个Node的指针,而后定义了类Lists,调用时候,需要传入一个Node,它会将currentNodes来记录当前的Node 重点看__next__,当当前节点为空的时候,则返回StopIteration告知for迭代器结束了,否则的话,取出当前节点的val并且返回,且将其下滑到下一个节点。

如上代码,运行后,结果如下:

Python中的迭代器怎么创建

关于“Python中的迭代器怎么创建”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Python中的迭代器怎么创建

本文链接: https://www.lsjlt.com/news/356720.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中的迭代器怎么创建
    这篇文章主要介绍“Python中的迭代器怎么创建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的迭代器怎么创建”文章能帮助大家解决问题。什么是迭代器什么是python迭代器呢? 举一个...
    99+
    2023-07-06
  • Python迭代器如何创建使用
    这篇文章主要介绍“Python迭代器如何创建使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python迭代器如何创建使用”文章能帮助大家解决问题。Python 迭代器迭代器是一种对象,该对象包含...
    99+
    2023-07-06
  • Python 3如何手动创建迭代器
    本篇文章为大家展示了Python 3如何手动创建迭代器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。今天带大家学习Python 3如何手动创建迭代器!概述迭代器即可以遍历诸如列表,字典及字符串等序列...
    99+
    2023-06-02
  • Python中迭代和迭代器是什么
    本篇文章给大家分享的是有关Python中迭代和迭代器是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。可迭代一个对象,物理或者虚拟存储的序列。list,tuple,strin...
    99+
    2023-06-17
  • python中的迭代器和生成器怎么用
    这篇“python中的迭代器和生成器怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python中的迭代器和生成器怎么用...
    99+
    2023-06-29
  • 怎么在python中使用迭代器协议
    这篇文章将为大家详细讲解有关怎么在python中使用迭代器协议,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注...
    99+
    2023-06-14
  • Python中迭代器和可迭代对象有什么关系
    在Python中,可迭代对象是具有__iter__方法的对象,而迭代器是具有__next__方法和__iter__方法的对象。迭代器...
    99+
    2024-03-12
    Python
  • 怎么理解Python的迭代器与zip
    这篇文章主要讲解了“怎么理解Python的迭代器与zip”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Python的迭代器与zip”吧!首先抛出一个困扰本人许久的问题:nums&nb...
    99+
    2023-06-25
  • Python中迭代器与生成器怎么使用
    一、迭代器(foreach)1、可迭代的对象内置有__iter__方法的都叫可迭代的对象。Python内置str、list、tuple、dict、set、file都是可迭代对象。x = 1.__iter__ # SyntaxError: ...
    99+
    2023-05-22
    Python
  • 怎么在python中连接多个迭代器
    怎么在python中连接多个迭代器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫...
    99+
    2023-06-14
  • python怎么创建新文件(python怎么创建文件代码)
    文章目录 前言1. 使用内置的open函数2. 使用with关键字3. 使用os模块 总结零基础Python学习资源介绍👉Python学习路线汇总👈...
    99+
    2023-10-20
    python microsoft java 新建python文件
  • python中的生成器、迭代器、装饰器怎么使用
    本篇内容介绍了“python中的生成器、迭代器、装饰器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、装饰器由于一个函数能实现一种...
    99+
    2023-07-02
  • 怎么在python中使用next获取迭代器
    这篇文章将为大家详细讲解有关怎么在python中使用next获取迭代器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python有哪些常用库python常用的库:1.requesuts;2....
    99+
    2023-06-14
  • python中的迭代器,生成器与装饰器怎么用
    这篇文章主要讲解了“python中的迭代器,生成器与装饰器怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python中的迭代器,生成器与装饰器怎么用”吧!迭代器每一个可迭代类内部都要实...
    99+
    2023-06-29
  • Python生成器与迭代器怎么用
    这篇文章给大家分享的是有关Python生成器与迭代器怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、生成器现在可以通过生成器来直接创建一个列表,但是由于内存的限制,列表的容量肯定是有限的,如果我们需要一个...
    99+
    2023-06-25
  • python中map迭代器的作用是什么
    在Python中,`map()`函数是一个迭代器函数,它的作用是将一个函数应用到一个或多个可迭代对象的元素上,生成一个新的可迭代对象...
    99+
    2023-09-28
    python
  • python返回迭代器怎么实现
    要实现一个返回迭代器的函数,可以使用生成器函数来实现。生成器函数是一种特殊的函数,可以在函数体中使用yield语句来产生值,每次调用...
    99+
    2023-09-28
    python
  • Python的迭代器协议
        迭代器是Python中的一个高级概念,迭代器是一个实现了迭代器协议的对象,那何为迭代器协议呢?满足下面两个条件就行。(1)该对象实现了__iter__()方法;(2)该对象实现了next()方法,返回当前元素,并指向下一个元素的位置...
    99+
    2023-01-31
    协议 迭代 Python
  • Python中for循环怎么定义迭代
    本文小编为大家详细介绍“Python中for循环怎么定义迭代”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python中for循环怎么定义迭代”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Python的 for...
    99+
    2023-06-30
  • 怎么在python中将迭代器转换为生成器
    怎么在python中将迭代器转换为生成器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作