25. 迭代器和生成器的详解

news2024/11/14 17:15:18

1. 迭代器

(1) 迭代是Python最强大的功能之一,是访问集合元素的一种方式。
(2) 迭代器是一个可以记住遍历的位置的对象。
(3) 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退
(4) 迭代器有两个基本的方法:iter() 和 next()
(5) 字符串,列表或元组对象都可用于创建迭代器

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

在这里插入图片描述
(6) 迭代器对象也可以使用常规的for语句进行遍历。

list = [5,6,7,8]
it = iter(list)
for item in it:
    print(item, end=" ")
# 运行结果:> 5 6 7 8 

(7) 创建一个迭代器
把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__()__next__()
[a]. __iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。
[b]. __next__() 方法(Python 2 里是 next())会返回下一个迭代器对象。

# 创建一个返回数字的迭代器,初始值为 1,逐步递增 1. 
class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self
    def __next__(self):
        x = self.a
        self.a += 1
        return x
        
myIter = iter(MyNumbers())
print(next(myIter))
print(next(myIter))
print(next(myIter))
print(next(myIter))

在这里插入图片描述
(8) StopIteration

class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self
    def __next__(self):
        if self.a <= 20:
            x = self.a
            self.a += 1
            return x
        else:
            raise StopIteration

myiter = iter(MyNumbers())
for item in myiter:
    print(item, end=', ')

2. 生成器

(1) 在 python 中,使用了 yield 的函数被称为生成器。
(2) 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
(3) 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
(4) 调用一个生成器函数,返回的是一个迭代器对象。

。。。。。。。。。。未完待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tkinter的Canvas控件

Canvas控件是Tkinter界面设计的一个画图工具&#xff0c;也可以用它导入外部图案到界面中 创建画布 import tkinter as tk roottk.Tk() #创建界面 root.title(Canvas) #界面命名 root.geometry(500x300) #设置界面大小 canvastk.Canvas(root) …

03_class创建device创建_kobject_uevent发送

总结 根据之前的kobject知道 /sys/目录下的每个文件夹都是一个 kobject的对象 使用class_create() 创建 /sys/class/xxx目录 同时返回class对象 使用device_create() 创建/sys/class/xxx/yyy目录 和创建/dev/yyy的文件节点 同时返回device对象 class和device 都间接继承于kobj…

【老卫搞机】135期:华为开发者联盟社区2022年牛人之星奖品开箱!

首先祝大家兔年大吉&#xff0c;身体安康&#xff0c;钱兔似锦&#xff01;今天咱们来开箱一件特殊的奖品&#xff0c;来自华为开发者联盟社区的新年祝福——2022年牛人之星。 华为有钱&#xff01;惯例用的是顺丰快递&#xff0c;各位看一下这里面是有很多件的 有这两件。第一…

三、TCP/IP---ARP和ICMP协议

ARP协议 简介&#xff1a;号称TCP/IP中最不安全的协议&#xff0c;安全工具&#xff0c;黑客工具大多数基于ARP协议。它是地址解析协议&#xff0c;用于实现从IP到MAC地址的映射&#xff0c;即询问目标Ip对应的MAC地址是多少&#xff0c;局域网通信不仅需要源目地址封装&#…

学习率衰减、局部最优、Batch归一化、Softmax回归

目录1.学习率衰减(Learning rate decay)在训练初期&#xff0c;梯度下降的步伐大一点&#xff0c;开始收敛的时候&#xff0c;小一些的学习率能让步伐小一些。1 epoch 遍历一遍训练集学习率衰减公式&#xff1a;例&#xff1a;假设衰减率decayrate 1&#xff0c;0.2epochNumα…

蓝桥杯-刷题-补基础

十道入门题 题目来源,题目,简单解析,代码,输入输出 目录 前言 一,汉诺塔 二,判断闰年 三,大写变小写 四&#xff0c;破译密码 五&#xff0c;反向数相加 六&#xff0c;Excel表中的列号 七&#xff0c;饮料兑换 八&#xff0c;角谷猜想 九&#xff0c;数字统计…

小喵2022年的年度总结,啊滴妈呀,开了眼了。

宝子&#xff0c;你不点个赞吗&#xff1f;不评个论吗&#xff1f;不收个藏吗&#xff1f; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的很重…

Qt扫盲- QUdpSocket 类理论总结

QUdpSocket 类理论总结一、概述二、使用流程三、QNetworkDatagram 简述一、概述 UDP (User Datagram Protocol)是一种轻量级的、不可靠的、面向数据报的、无连接的协议。当可靠性不重要时&#xff0c;可以使用它。QUdpSocket是QAbstractSocket的子类&#xff0c;允许发送和接收…

SpringBoot+Vue--token,vue导航守卫,axios拦截器-笔记3

自己学习记录,写的不详细,没有误导,不想误导 大概的登录逻辑,前后端完整实现: 1.用户名,密码验证成功后,后端签发token返回给前端 2.前端把token保存到本地存储 3.每次请求前,通过axios请求拦截器,统一发送token 4.通过Vue导航守卫,和axios响应拦截器,统一保护页面 新建个…

【华为上机真题 2023】事件推送

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

机制设计原理与应用(四)预算可行的拍卖机制

文章目录4 预算可行的拍卖机制4.1 特征4.2 使用案例4.3 拍卖设计问题4.4 单调次模函数&#xff08;Monotone Submodular Function&#xff09;4.4.1 分配算法4.4.2 关键支付计划4.4.3 特性4.5 在线预算可行的拍卖机制4.5.1 Secretary Problem(A Optimal Stopping Problem)4.5.2…

如何与他人交流-第5期

上期我们讲了打破预期,顺应主体这期我们来讲讲如何建立亲和关系(关系侧)我的别人交流,只有在不把别人当成对象(工具人),而是把对方当成主体的情况下(让别人感受到尊重),这是相互尊重的终极本质,也是唯一方法.把别人当人看.认同对方,对方也会认同你.自信从何而来自信本意为相信自…

信息论复习—连续信源、信道及容量

目录 连续信源的熵&#xff1a; 连续信源离散化后的概率空间&#xff1a; 连续信源离散化后的熵&#xff1a; 连续信源的绝对熵&#xff1a; 连续信源的相对熵&#xff1a; 连续信源的条件熵&#xff1a; 连续信源的相对条件熵&#xff1a; 连续信源相对熵的最大化&#…

李宏毅ML-卷积神经网络CNN

李宏毅ML-卷积神经网络CNN 文章目录李宏毅ML-卷积神经网络CNNImage ClassificationConvolutional Layer1. Neural Version StoryReceptive FieldParameter Sharing2. Filter Version StoryFilterParameter Sharing3. Summary of Two VersionsPooling LayerThe Whole CNNDrawbac…

Hyperbolic geometry (双曲几何简介)

ContentsManifolds: A Gentle IntroductionManifoldsTangent SpacesMetric TensorRiemannian Manifolds (黎曼流形)Hyperbolic Geometry and Poincar EmbeddingsCurvature (曲率)Euclidean and Non-Euclidean GeometriesHyperbolic SpaceMinkowski SpaceHyperboloid (双曲面)Th…

树和森林(快来瞧)

森林的定义 森林是由多颗互不相交的树所构成的树的集合&#xff0c;即森林包含多棵树&#xff0c;每一棵树都有自己的根结点。一棵树也可以看成森林。 树的表示及基本操作 1.树&#xff08;一般树&#xff09;的表示方法 1.1树的双亲表示法 树的双亲表示法是将树的各个节点…

现场工程师出手-PCAPHub与云SSH隧道稳妥实现异地LAN工业联测

在去年&#xff0c;因为众所周知的因素影响&#xff0c;项目的甲方主动提出延缓设备的交付。作为乙方&#xff0c;尽管项目延缓是甲方提出的&#xff0c;但依旧希望按期交付&#xff0c;这样才能回款&#xff0c;熬过一年。其实&#xff0c;2022年初&#xff0c;几类传感器、压…

S7-1200PLC与ABB机器人进行PROFINET通信的具体方法和步骤详解

S7-1200PLC与ABB机器人进行PROFINET通信的具体方法和步骤详解 1. TIA博途一侧的配置: 当我们安装好RobotStudio软件后,可以在以下的目录中C:\ProgramData\ABB Industrial IT\Robotics IT\DistributionPackages\ABB.RobotWare-6.08.0134\RobotPackages\RobotWare_RPK_6.08.013…

【JavaWeb】JavaScript基础语法(上)

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:JavaScript基础语法(上)&#xff01; &#x1f680;&#x1f680;代码托管平台github&#xff1a;JavaWeb代码存放仓库&#xff01…

ESP32设备驱动-TSL2561亮度传感器驱动

TSL2561亮度传感器驱动 1、TSL2561介绍 TSL2560 和 TSL2561 是第二代环境光传感器器件。每个都包含两个集成模数转换器 (ADC),用于集成来自两个光电二极管的电流。两个通道的整合同时发生。转换周期完成后,转换结果分别传送到通道 0 和通道 1 数据寄存器。传输是双缓冲的,…