Python——迭代器

2023-11-11

迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。

字符串,列表或元组对象都可用于创建迭代器:

 list=[1,2,3,4]
 it = iter(list)    # 创建迭代器对象
 print (next(it))   # 输出迭代器的下一个元素
	
 print (next(it))
	

迭代器对象可以使用常规for语句进行遍历:

 
list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")

创建一个迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法 iter() 与 next() 。
如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为 init(), 它会在对象初始化的时候执行。

创建一个返回数字的迭代器,初始值为 1,逐步递增 1:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    x = self.a
    self.a += 1
    return x
 
myclass = MyNumbers()
myiter = iter(myclass)
 
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

迭代器的应用场景

我们发现迭代器最核心的功能就是可以通过next()函数的调用来返回下一个数据值。如果每次返回的数据值不是在一个已有的数据集合中读取的,而是通过程序按照一定的规律计算生成的,那么也就意味着可以不用再依赖一个已有的数据集合,也就是说不用再将所有要迭代的数据都一次性缓存下来供后续依次读取,这样可以节省大量的存储(内存)空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python——迭代器 的相关文章

随机推荐

  • c++排序算法(快速排序、冒泡排序、选择排序)

    1 快速排序 这里的容器是全局的 不全局的话 可以在参数那里加个数组的参数传进来 从大到小 从大到小排序 void ResManage quickSortLastUpdateTime const int iLeftIndex const i
  • 华为手机投屏电脑_华为手机如何实现无线投屏?

    朋友们 大家好 大家知道吗 其实我们风雪社是可以留言的 点击下面图片就可以跳转到留言界面哦 别担心 没有广告的 接下来 开始今天的内容了 大家都知道一些华为手机支持无线投屏 那用华为的朋友们 如何知道自己的手机是否可以投大屏幕呢 如果可以
  • Qt--02:设置父对象

    问题引入 在Widget中创建Button等控件时 如果不指定Button等控件的父对象 就会产生相关控件无法再此Widget窗口中显示 因此当一些控件需要在当前Widget窗口中显示的时候就需要为控件添加父对象 指定父对象方式 setPa
  • Spring Security 实现 antMatchers 配置路径的动态获取

    为什么80 的码农都做不了架构师 gt gt gt 1 为什么要实现动态的获取 antMatchers 配置的数据 这两天由于公司项目的需求 对 spring security 的应用过程中需要实现动态的获取 antMatchers per
  • mybatis防注入

    1 SQL防注入 mybatis语句中要使用 xxx 防止SQL注入 xxx 只是简单替换占位符 有注入的风险 例子 1 1 getNameByUserId resultType String gt SELECT name FROM use
  • HTML预留字符的处理

    目录 HTML 实体 不间断空格 non breaking space HTML 实例示例 HTML 中有用的字符实体 HTML 中的预留字符必须被替换为字符实体 HTML 实体 在 HTML 中 某些字符是预留的 在 HTML 中不能使用
  • JavaScript new Date() -2--------- 获取指定月份的天数 和 获取指定月份的第一天是周几

    使用 new Date 创建一个 Date 对象 var my date new Date 用当前日期和时间创建的新的日期对象 console log my date Fri Jan 10 2020 10 16 19 GMT 0800 中国
  • 电脑用电,电脑一天24小时多少度电 电脑一天用电量计算【图文】

    我们都知道 电器只要运行着 就会有一定的耗电量 比如我们平时的冰箱 空调 电视 电脑等等 今天小编便主要针对电脑来讲一讲 很多的朋友可能比较关注的都是电脑一天24小时耗用多少度电 还有因为我们想要自己来计算的话 应该要如何计算呢 还有 很多
  • DockerFile语法讲解

    Docker官网 https docs docker com Docker的github地址 https github com moby moby Dockerhub官网 https registry hub docker com 如果do
  • USB Type-C引脚解析 && CC、DFP、UFP、DRP用途解析【转】

    深入解析TypeC 1 Type C接口引脚分布 2 USB TypeC接口特点 3 DFP UFP DRP用途解析 4 深入解析CC通道 5 总结 1 Type C接口引脚分布 有24根信号 其中电源和地占了9根 有4个地和4个Vbus
  • 不定参数函数

    参数的存储位置 include
  • BES2300X,BES2500X——UI(按键,提示音,指示灯)

    前言 BES2300X BES2500X系列博文请点击这里 本文是BES2300X BES2500X系列博文UI部分 一个耳机 音箱 UI是联系使用者与开发者最直接的一个窗口 当然 对于吾等码农而言 UI设计并不是我们最关心的 我们主要做的
  • Altium Designer---PCB覆铜镂空

    AD版本 AD18 转到PCB界面 如下 在PCB页面切换到你想挖空区域所在图层 比如我这里想要挖空Top Layer和Bottom Layer 先切换到Top Layer 右击选择 多边形覆铜挖空 然后在PCB上绘制出想要挖空的区域 如下
  • Java 校验注解的使用、自定义校验注解

    文章目录 一 引入依赖 二 基本校验 1 常用校验注解 2 自动校验 3 代码中获取校验结果 三 嵌套校验 四 分组校验 五 单属性自定义校验规则 1 功能 只能取枚举的值 六 多属性自定义联合校验规则 1 功能 不同优惠券类型校验不同参数
  • Acwing796.子矩阵的和

    理解二维前缀和 include
  • 如何看待过去,决定了你的命运

    一 决定我们自身的不是过去的经历 而是我们自己赋予经历的意义 多年以来 听了太多 好的家庭养育出来的孩子 一生都在温暖他人 坏的家庭养育出来的孩子 一辈子都在找到自己需要的温暖 在各个新闻中也确实有非常多 因为少年时被恶意对待 从而导致无法
  • gc 调优

    文章目录 Xloggc xxx logs xxx gc t log XX UseGCLogFileRotation XX NumberOfGCLogFiles 10 XX GCLogFileSize 20M XX PrintGCDetail
  • Node Sass does not yet support your current environment解决办法

    在启动Nodejs项目时出现以下Error Error Node Sass does not yet support your current environment Linux 64 bit with Unsupported runtim
  • Python基础概念

    什么是Python Python是什么 首先我们先来看百度百科对于Python的解释 由此可见 我们知道了python是一门编程语言 Gudio van Rossum 就是Python这门语言的祖师爷 Python发展历程简介 接下来我们来
  • Python——迭代器

    迭代器 迭代是Python最强大的功能之一 是访问集合元素的一种方式 迭代器是一个可以记住遍历的位置的对象 迭代器对象从集合的第一个元素开始访问 直到所有的元素被访问完结束 迭代器只能往前不会后退 迭代器有两个基本的方法 iter 和 ne