广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中实现迭代器(iterator)的方法示例
  • 755
分享到

python中实现迭代器(iterator)的方法示例

示例迭代方法 2022-06-04 18:06:49 755人浏览 独家记忆

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

摘要

概述 迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 延迟计算或惰性求值 (Lazy evaluation) 迭代器不要求你事先准

概述

迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

延迟计算或惰性求值 (Lazy evaluation)

迭代器不要求你事先准备好整个迭代过程中所有的元素。仅仅是在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。

今天创建了一个实体类,大致如下:


class Account():
 def __init__(self,
   account_name,
   account_type,
   account_cost,
   return_amount=0):
 self.account_name = account_name # 账户名
 self.account_type = account_type # 账户类型
 self.account_cost = account_cost # 月结费用
 self.return_amount = return_amount # 返还金额

然后创建一个实体列表:


accounts = [Account("张三", "年费用户", 450.00, 50),
  Account("李四", "月结用户", 100.00),
  Account("杨不悔", "月结用户", 190.00, 25),
  Account("任我行", "月结用户", 70.00, 10),
  Account("凌未风", "年费用户", 400.00, 40)]

我想要执行next()功能,也就是需要的时候“next”一下,得到List中的下一个元素。

直接测试一下:

查看图片

结果发现List不支持next()特性。这时候,List只是一个iterable,而不是iterator。

iterable和iterator的区别如下:

iterable —— 只实现了__iter__的对象; iterator —— 同时实现了__iter__和__next__方法的对象。

其中, __iter__返回iterator对象, __next__则返回迭代过程的下一个元素。

1. 让列表成为iterator

要让前面的accounts List成为iterator只需简单的一个iter()函数:


accounts_iterator = iter(accounts)
(next(accounts_iterator)).account_name

结果如下图所示:

查看图片

这么简单的函数,估计还是有不少python开发者不知道吧?

2. 自定义iterator对象

扩展开来讲,如何定义自己的iterator对象呢?其实也就是按照上面的定义,实现__iter__和__next__方法。

我们接下来定义一个AccountIterator类:


class AccountIterator():
 def __init__(self, accounts):
 self.accounts = accounts # 账户集合
 self.index = 0

 def __iter__(self):
 return self

 def __next__(self):
 if self.index >= len(self.accounts):
  raise StopIteration("到头了...")
 else:
  self.index += 1
  return self.accounts[self.index-1]

运行结果如:

查看图片

通过这一阵折腾,next()功能就实现了。python有不少意外的功能,还等着我们不断去探究,也许这就是Python的魅力及极客之处。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流。

--结束END--

本文标题: python中实现迭代器(iterator)的方法示例

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

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

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

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

下载Word文档
猜你喜欢
  • python中实现迭代器(iterator)的方法示例
    概述 迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 延迟计算或惰性求值 (Lazy evaluation) 迭代器不要求你事先准...
    99+
    2022-06-04
    示例 迭代 方法
  • Python中Iterator迭代器的使用杂谈
    迭代器是一种支持next()操作的对象。它包含一组元素,当执行next()操作时,返回其中一个元素;当所有元素都被返回后,生成一个StopIteration异常。 >>>a=[1,2,...
    99+
    2022-06-04
    杂谈 迭代 Python
  • Java中Iterator(迭代器)的用法详解
    Java迭代器(Iterator)是 Java 集合框架中的一种机制,它提供了一种在不暴露集合内部实现的情况下遍历集合元素的方法。Java Iterator(迭代器)不是一个集合,它...
    99+
    2023-05-19
    Java Iterator迭代器使用 Java Iterator Java 迭代器
  • C ++迭代器iterator在string中使用方法介绍
    目录一、正向迭代器二、正向迭代器(只读数据)三、反向迭代器四、反向迭代器(只读)五、auto来替换这些特别长类型名一、正向迭代器 【例子】 //正向迭代器 void test1()...
    99+
    2022-11-13
    C ++迭代器iterator C ++迭代器在string使用
  • C# 中怎么利用Iterator实现迭代器模式
    本篇文章给大家分享的是有关C# 中怎么利用Iterator实现迭代器模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C# Iterator迭代器模式我们在平时的开发中应该经常...
    99+
    2023-06-18
  • C++中单向链表类模板和iterator迭代器类的示例分析
    这篇文章主要介绍了C++中单向链表类模板和iterator迭代器类的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。链表用来构建许多其它数据结构,如堆栈,队列和他们的派...
    99+
    2023-06-29
  • Python中有哪些迭代器方法
    Python中有哪些迭代器方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python...
    99+
    2023-06-14
  • python中divmod()方法的示例代码
    这篇文章主要为大家展示了“python中divmod()方法的示例代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中divmod()方法的示例代码...
    99+
    2022-10-19
  • C#如何实现迭代器方法
    这篇文章主要介绍C#如何实现迭代器方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.迭代器方法可以使用foreach循环语句进行的迭代的方法,称为可迭代方法,或者迭代器方法。迭代器用法法介绍。  迭代器用于依次返...
    99+
    2023-06-29
  • python迭代器自定义类的示例分析
    这篇文章主要介绍python迭代器自定义类的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、说明迭代器还具有迭代用户定制类别的能力。迭代对象需要支持两种方式:_iter__()和next(),前者返回迭代本...
    99+
    2023-06-14
  • Python实现一维插值方法的示例代码
    目录案例一:线性插值案例二:案例应用插值主要用于物理学数学中,逼近某一确定值的方法 (1)插值是通过已知的离散数据求未知数据的方法。 (2)与拟合不同,插值要求曲线通过所有的已知数据...
    99+
    2022-11-10
  • python遍历可迭代对象的实现方法
    目录可迭代(iterable)迭代器(iterator)方法1:使用for循环简单结构遍历方法2:借用 range() 和 len() 函数遍历方法3:借用 iter() 函数遍历方...
    99+
    2023-02-28
    python 遍历可迭代对象 python 可迭代对象
  • ES6语法之可迭代协议和迭代器协议的示例分析
    这篇文章给大家分享的是有关ES6语法之可迭代协议和迭代器协议的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ECMAScript 2015的几个补充,并不是新的内置或语法...
    99+
    2022-10-19
  • Java实现二叉树的示例代码(递归&迭代)
    目录1.二叉树基本概念见上节:详解Java中二叉树的基础概念(递归&迭代) 2.本次展示链式存储 以此图为例,完整代码如下: //基础二叉树实现 //使用左右孩子表示法 ...
    99+
    2022-11-13
  • 实现Springboot Thymeleaf数据迭代的示例分析
    小编给大家分享一下实现Springboot Thymeleaf数据迭代的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在模板文件中,可以使用“${{......
    99+
    2023-06-08
  • Python 中迭代器与生成器实例详解
    Python 中迭代器与生成器实例详解 本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下: 1.手动遍历迭代器 应用场景:想遍历一个可迭代对象中的所...
    99+
    2022-06-04
    生成器 详解 实例
  • 关于PHP数组迭代器的使用方法实例
    近来在开发一个视力筛查电子报告系统的产品,这个产品的作用是自动提取视力筛查过程中得到的屈光检查数据,并结合数据自动生成通俗易懂且专业的电子报告,以方便家长可以通过公众号或H5链接查阅。 要实现这个需求,第一步是对验光设备里打印出来的纸质报告...
    99+
    2015-05-29
    php数组迭代器 如何实现迭代器 数组迭代方法
  • java 中ArrayList迭代的两种实现方法
    java 中ArrayList迭代的两种实现方法Iterator与for语句的结合来实现,代码很简单,大家参考下。实现代码:package cn.us; import java.util.ArrayList; import java.uti...
    99+
    2023-05-31
    java arraylist 迭代
  • Python迭代器的实现原理
    目录前言:迭代器的创建迭代器的底层结构迭代器是怎么迭代元素的?小结前言: 在Python里面,只要类型对象实现了__iter__,那么它的实例对象就被称为可迭代对象(Iterable...
    99+
    2022-11-11
  • Python中的迭代器是如何实现的?
    Python中的迭代器是如何实现的?迭代器是Python中非常重要的一个概念,它可以让我们方便地对集合中的元素进行遍历和访问。在Python中,几乎所有可迭代的对象,比如列表、元组、字典和集合等,都可以通过迭代器来进行遍历。那么迭代器是如何...
    99+
    2023-10-25
    Python 实现 (Implementation) 迭代器 (Iterator)
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作