当前位置: 首页 > news >正文

学习之什么是迭代器

什么是迭代器

迭代器的作用:访问容器中的元素
首先要了解什么是Iterable

lterable(可迭代的)

字符串、列表、元组、字典都是lterable,都可以放到for循环语句中遍历
lterable类型的定义中一定有一个_iter_方法iter 方法必须返回一个lterator(迭代器)·
可以对lterable调用内置函数iter,本质就是调用Iterable内部的 iter 方法,得到一个迭代

iterator

lterator继承了lterable,所以lterator一定是可迭代的对象,反之则不然。
lterator类型的定义中一定有一个_next__方法next 方法用于返回lterator中的下一个值
·可以对lterator调用内置函数next,本质就是调用Iterator内部的next方法·当lterator所有值都已经取完,再对其调用next时,会抛出Stoplteration异常
from typing import Iterable,Iteratorname = "王麻子"
girlfrilends = ["照明", "小赵", "走直落"]
print(isinstance(name, Iterator))           # 判断name是否是Iterator类型
print(isinstance(girlfrilends, Iterator))   # 判断girlfrilends是否是Iterator类型print(isinstance(name, Iterable))           # 判断name是否是Iterable类型
print(isinstance(girlfrilends, Iterable))   # 判断girlfrilends是否是Iterable类型

运行结果
在这里插入图片描述

# 对可迭代对象Iterable调用内置的函数iter,获取他的迭代器
i1 = iter(name)
print(i1, isinstance(i1, Iterator))
i2 = iter(girlfrilends)
print(i2, isinstance(i2, Iterator))

运行结果:
在这里插入图片描述

# 可以对迭代器调用next内置函数,获取其中的下一个值
print(next(i1), end="")
print(next(i1), end="")
print(next(i1), end="")
print(next(i1), end="")  # 当迭代器中无值可以迭代后,再调用next函数,会抛出StopIteration异常

运行结果:
在这里插入图片描述

# 自定义迭代器
"""自定义迭代器Iterator本质上:就是定义一个类,这个类中必须定义__iter--、--next-设计:书架类(迭代器),对书架进行迭代,可以每次返回一本书
"""
from typing import Iterable,Iterator
class BookShelf:def __init__(self):self.books = ["西游记", "水浒传", "红楼梦", "三国演义"]self.curr_index = -1  # 当前已经迭代到的值的索引def __iter__(self):"""用于返回迭代器"""return selfdef __next__(self):if self.curr_index == len(self.books)-1:raise StopIterationself.curr_index += 1print(self.curr_index)return self.books[self.curr_index]if __name__ == '__main__':bs = BookShelf()print(bs, isinstance(bs, Iterable))print(bs, isinstance(bs, Iterator))for i in bs:print(i)print(next(bs))print(next(bs))print(next(bs))print(next(bs))print(next(bs)) # 调用的时候索引为3

运行结果:
在这里插入图片描述

相关文章:

学习之什么是迭代器

什么是迭代器 迭代器的作用:访问容器中的元素 首先要了解什么是Iterablelterable(可迭代的) 字符串、列表、元组、字典都是lterable,都可以放到for循环语句中遍历 lterable类型的定义中一定有一个_iter_方法iter 方法必须返回一个lterator(迭代器) 可以…...

数据结构-3.6.队列的链式实现

队列可以理解为单链表的阉割版&#xff0c;相比单链表而言&#xff0c;队列只有在添加和删除元素上和单链表有区别 一.队列的链式实现&#xff1a; 1.图解&#xff1a; 2.代码&#xff1a; #include<stdio.h> ​ typedef struct LinkNode //链式队列结点 {int data;st…...

Java中去除字符串中的空格

在平时的开发中&#xff0c;在后端经常要获取前端传过来的字符串&#xff0c;有的是用户从输入框中输入的&#xff0c;有的是通过excel表格中获取的。 在这些字符串中&#xff0c;有时候会遇到字符串中有空格、换行符或者制表符&#xff0c;对于这种字符串来说&#xff0c;直接…...

AI大模型算法工程师就业宝典—— 高薪入职攻略与转行秘籍!

从ChatGPT到新近的GPT-4&#xff0c;GPT模型的发展表明&#xff0c;AI正在向着“类⼈化”⽅向迅速发展。 GPT-4具备深度阅读和识图能⼒&#xff0c;能够出⾊地通过专业考试并完成复杂指令&#xff0c;向⼈类引以为傲的“创造⼒”发起挑战。 现有的就业结构即将发⽣重⼤变化&a…...

node-rtsp-stream、jsmpeg.min.js实现rtsp视频在web端播放

1. 服务地址&#xff08;私有&#xff09;&#xff1a;https://gitee.com/nnlss/video-node-server 2.node-rtsp-stream 需要安装FFMPEG&#xff1b; 3.给推拉流做了开关&#xff0c;可借助http请求&#xff0c;有更好方式可联系&#xff1b; 4.存在问题&#xff1a; 1&…...

C++ 9.27

作业&#xff1a; 将之前实现的顺序表、栈、队列都更改成模板类 Stack #include <iostream> using namespace std; template <typename T> class Stack { private: T* arr; // 存储栈元素的数组 int top; // 栈顶索引 int capacity; // 栈的…...

让具身智能更快更强!华东师大上大提出TinyVLA:高效视觉-语言-动作模型,遥遥领先

论文链接&#xff1a;https://arxiv.org/pdf/2409.12514 项目链接&#xff1a;https://tiny-vla.github.io/ 具身智能近期发展迅速&#xff0c;拥有了大模型"大脑"的机械臂在动作上更加高效和精确&#xff0c;但现有的一个难点是&#xff1a;模型受到算力和数据的制…...

Excel 获取某列不为空的值【INDEX函数 | SMALL函数或 LARGE函数 | ROW函数 | ISBLANK 函数】

〇、需求 Excel 获取某列不为空的值(获取某列中第一个非空值 或 获取某列中最后一个非空值)。 一、知识点讲解 INDEX函数 和 SMALL函数 两个函数搭配使用都可以实现上述需求 获取某列中第一个非空值 。 INDEX函数 和 LARGE函数 两个函数搭配使用都可以实现上述需求 获取某…...

爆火!大模型算法岗 100 道面试题全解析,赶紧收藏!

大模型应该是目前当之无愧的最有影响力的AI技术&#xff0c;它正在革新各个行业&#xff0c;包括自然语言处理、机器翻译、内容创作和客户服务等等&#xff0c;正在成为未来商业环境的重要组成部分。 截至目前大模型已经超过200个&#xff0c;在大模型纵横的时代&#xff0c;不…...

Python画笔案例-068 绘制漂亮米

1、绘制漂亮米 通过 python 的turtle 库绘制 漂亮米,如下图: 2、实现代码 绘制 漂亮米,以下为实现代码: """漂亮米.py注意亮度为0.5的时候最鲜艳本程序需要coloradd模块支持,安装方法:pip install coloradd程序运行需要很长时间,请耐心等待。可以把窗口最小…...

得物App荣获国家级奖项,正品保障引领潮流电商新风尚

近日&#xff0c;在2024年中国国际服务贸易交易会上&#xff0c;得物App凭借其在科技创新保障品质消费领域的突出成果&#xff0c;再次荣获国家级殊荣——“科技创新服务示范案例”。这是继上海市质量金奖之后&#xff0c;得物App获得的又一个“高含金量”奖项。 作为深受年轻人…...

【BurpSuite】SQL注入 | SQL injection(1-2)

&#x1f3d8;️个人主页&#xff1a; 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞&#x1f44d;收藏&#x1f497;支持一下哦 【BurpSuite】SQL注入 | SQL injection&#xff08;1-2&#xff09; 实验一 Lab: SQL injection vulnerability in WHERE clause…...

ThreadPoolExecutor有哪些核心的配置参数?

ThreadPoolExecutor 是 Java 中强大的线程池实现&#xff0c;具有多种配置参数&#xff0c;可以灵活地根据具体应用需求进行调整。以下是 ThreadPoolExecutor 的核心配置参数及其简要说明&#xff1a; 1. corePoolSize 描述&#xff1a;核心线程池的大小&#xff0c;即最小保…...

关于工作虚拟组的一些思考

这是学习笔记的第 2493篇文章 因为各种工作协作&#xff0c;势必要打破组织边界&#xff0c;可能会存在各种形态的虚拟组。 近期沉淀了一些虚拟组的管理方式&#xff0c;在一定时间范围内也有了一些起色&#xff0c;所以在不断沉淀的过程中&#xff0c;也在不断思考。 这三个虚…...

【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)

目录 Spring Boot中集成Redis 1.项目创建和环境配置 2.基本操作演示 Spring Boot中集成Redis Spring社区也自定义了一套Redis的客户端&#xff0c;与jedis的操作方式有所差异&#xff0c;Spring中把每个类型的操作都单独封装了起来。下面就让我来带大家了解如何在Spring Boot…...

【CSS】透明度 、过渡 、动画 、渐变

opacity 透明度transition 过渡animation 动画background 渐变 ( 线性渐变 \ 径向渐变 \ 锥形渐变 ) opacity 透明度 设置元素的透明度&#xff0c;会影响元素及其所有子元素的透明度&#xff0c;值范围&#xff1a;0&#xff08;完全透明&#xff09;到 1&#xff08;完全不透…...

尚硅谷vue3+TypeScript笔记大全

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xff0c;最…...

New major version of npm available! 8.3.1 -> 10.8.3 报错

问题 npm install 安装新项目时&#xff0c;出现如下升级错误。 npm notice npm notice New major version of npm available! 8.3.1 -> 10.8.3 npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.8.3 npm notice Run npm install -g npm10.8.3 to upd…...

Python(七)- 文件操作

目录 文件操作 打开文件 读数据 写数据 关闭文件 文件读写实例 文件写 文件读 读数据类型 备份文件 os模块 目录的具体操作 文件操作 在Python中操作文件记录信息的步骤&#xff1a; &#xff08;1&#xff09;打开文件&#xff0c;或新建一个文件&#xff1b; o…...

Docker技术深度解析与实践案例

Docker技术深度解析与实践案例 在当今快速迭代的软件开发环境中&#xff0c;如何高效地打包、部署和管理应用成为了开发人员和运维团队面临的重大挑战。Docker&#xff0c;作为一种开源的应用容器引擎&#xff0c;凭借其轻量级、可移植性和高效性&#xff0c;迅速成为解决这些…...

杰理之AutoDuck 闪避节点参数更新结构体【篇】

struct autoduck_update_parm{ int duck_amount; //背景音乐闪避的音量值&#xff08;dB) int attack; //启动时间(ms) int release; //释放时间(ms) int hold_time; //闪避之后的保持时间 (ms) }; typedef struct AutoDuckParam_TOOL_SET { int is_bypass; struct aut…...

告别手动切号!全栈实战:用AI辅助编写一个「多平台海量私信秒回」系统

最近在研究全网营销和客资管理系统&#xff0c;看到这样两张产品宣传图&#xff0c;直击痛点&#xff1a;一个工作台&#xff0c;快速处理海量私信/评论&#xff08;告别多个聊天窗口来回切换&#xff09;。7x24小时在线&#xff0c;AI秒回客户&#xff08;告别响应时间长、客户…...

[实战] 2026年CNC加工质量控制:从工程图纸数字化到检验计划生成的全流程解析

在 2026 年的精密制造环境中&#xff0c;cnc 加工&#xff08;CNC machining&#xff09;已不再仅仅是切削工艺的竞争&#xff0c;更是数字化协作与质量控制能力的较量。随着多品种、小批量生产模式成为主流&#xff0c;如何快速解析复杂的工程图纸并制定高精度的检验计划&…...

3分钟解决Visual C++运行库问题:一站式安装修复工具完全指南

3分钟解决Visual C运行库问题&#xff1a;一站式安装修复工具完全指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾被"找不到msvcp140.dll"…...

物联网平台资本逻辑与开发实战:从涂鸦融资看行业价值回归

1. 从资本视角看物联网平台&#xff1a;一场关于“入口”与“生态”的持久战最近和几个做硬件的朋友聊天&#xff0c;大家不约而同地提到了一个词&#xff1a;“上云”。这个“云”&#xff0c;指的就是物联网开发平台。从智能家居的插座、灯泡&#xff0c;到工业产线上的传感器…...

基于LoRA与SFT技术构建中文大语言模型:从词表扩展到指令微调实战

1. 项目概述&#xff1a;为什么我们需要中文专属的大语言模型底座&#xff1f; 如果你在过去一年里尝试过用开源的大语言模型&#xff08;LLM&#xff09;来处理中文任务&#xff0c;大概率会遇到过这样的尴尬&#xff1a;模型对英文指令理解得很好&#xff0c;但一换成中文&am…...

从零开始在个人项目中接入Taotoken的完整步骤与体会

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从零开始在个人项目中接入Taotoken的完整步骤与体会 最近在维护一个个人开发的智能写作助手项目&#xff0c;最初直接使用了某家模…...

MQTT 协议 超详细精讲

一、MQTT 协议简介全称&#xff1a;Message Queuing Telemetry Transport&#xff08;消息队列遥测传输协议&#xff09;定位&#xff1a;专为物联网、嵌入式设备、低带宽、弱网环境设计的轻量级发布 / 订阅式消息传输协议&#xff0c;是数字孪生、智能家居、工业物联网最常用的…...

别再硬编码IP了!深入Nacos 2.x源码,看它如何‘智能’又‘犯错’地选择服务端地址

Nacos 2.x服务端IP地址选择机制深度解析与实战调优 在分布式系统架构中&#xff0c;服务注册与发现是微服务架构的核心基础设施。作为阿里巴巴开源的服务发现和配置管理平台&#xff0c;Nacos凭借其简单易用、功能强大等特点&#xff0c;已成为众多企业微服务架构的首选组件。…...

JetBrains IDE试用重置终极指南:高效管理30天评估期

JetBrains IDE试用重置终极指南&#xff1a;高效管理30天评估期 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE试用重置工具&#xff08;ide-eval-resetter&#xff09;是一款专为IntelliJ IDEA、P…...