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

Python-迭代

1、迭代器

迭代器是一个对象,它可以记录遍历的相关信息,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器有两个基本的方法:iter() 和 next()。我们都过命令行工具,了解一下python的底层迭代机制

>>> items = [1,2,3]
>>> it = iter(items)
>>> next(it)
1
>>> next(it)
2
>>> next(it)
3
>>> next(it)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
StopIteration

上面执行的流程

  • 根据给定的可迭代对象生成迭代器
  • 从迭代器中重复获取下一项
  • 如果成功获得了下一项,上一项已经消失
  • 如果在获取下一项时遇到“StopIteration”异常,则停止循环,因为后面没有其他项了

2、应用

1、不使用for循环实现对可迭代对象便利,可以使用什么实现遍历呢?
手动的遍历可迭代对象,使用 next() 函数并在代码中捕获 StopIteration 异常

def manual_iter():with open('test.txt') as f:try:while True:line = next(f)print(line, end='')except StopIteration:pass

2、自定义迭代器
Python 中创建自定义迭代器,需要实现一个类,该类必须包含 iter() 和 next() 方法。iter() 方法返回迭代器对象本身,next() 方法返回序列中的下一个元素

class EvenIterator:def __init__(self, lst):self.lst = lstself.index = 0def __iter__(self):return selfdef __next__(self):while self.index < len(self.lst):current = self.lst[self.index]self.index += 1if current % 2 == 0:return currentraise StopIterationmy_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]for i in EvenIterator(my_list):print(i)输出:
2
4
6
8
10

在上面的示例中定义了一个名为 EvenIterator 的类,该类接受一个列表作为参数。我们实现了 iter() 和 next() 方法来定义迭代器的行为,并在 next() 方法中使用 raise StopIteration 来指示迭代结束。

相关文章:

Python-迭代

1、迭代器 迭代器是一个对象&#xff0c;它可以记录遍历的相关信息&#xff0c;迭代器对象从集合的第一个元素开始访问&#xff0c;直到所有的元素被访问完结束。迭代器有两个基本的方法&#xff1a;iter() 和 next()。我们都过命令行工具&#xff0c;了解一下python的底层迭代…...

【论文阅读】DEPCOMM:用于攻击调查的系统审核日志的图摘要(SP-2022)

Xu Z, Fang P, Liu C, et al. Depcomm: Graph summarization on system audit logs for attack investigation[C]//2022 IEEE Symposium on Security and Privacy (SP). IEEE, 2022: 540-557. 1 摘要 ​ 提出了 DEPCOMM&#xff0c;这是一种图摘要方法&#xff0c;通过将大图划…...

大语言模型之一 Attention is all you need ---Transformer

大语言模型已经在很多领域大显身手&#xff0c;其应用包括只能写作、音乐创作、知识问答、聊天、客服、广告文案、论文、新闻、小说创作、润色、会议/文章摘要等等领域。在商业上模型即产品、服务即产品、插件即产品&#xff0c;任何形态的用户可触及的都可以是产品&#xff0c…...

数字鸿沟,让气候脆弱者更脆弱

随着科技的飞速发展&#xff0c;数字化正在改变我们的生活方式和社会结构。然而&#xff0c;数字鸿沟&#xff08;Digital Divide&#xff09;这一长期存在的问题&#xff0c;却在某些方面加剧了社会的不平等现象。在此&#xff0c;我们将探讨数字鸿沟如何加剧了气候脆弱者的脆…...

Tomcat 部署优化

Tomcat Tomcat 开放源代码web应用服务器&#xff0c;是由java代码开发的 tomcat就是处理动态请求和基于java代码的页面开发 可以在html当中写入java代码&#xff0c;tomcat可以解析html页面当中的iava&#xff0c;执行动态请求 动态页面机制有问题&#xff1a;不对tomcat进行优…...

Django框架-使用celery(一):django使用celery的通用配置,不受版本影响

目录 一、依赖包情况 二、项目目录结构 2.1、怎么将django的应用创建到apps包 三、celery的配置 2.1、celery_task/celery.py 2.2、celery_task/async_task.py 2.3、celery_task/scheduler_task.py 2.4、utils/check_task.py 四、apps/user中配置相关处理视图 4.1、基本…...

nvue语法与vue的部分区别

文章目录 1、仅支持flex布局2、字体样式3、高度问题 1、仅支持flex布局 仅支持flex布局。而且默认的是 flex-direction: column; 2、字体样式 字体的样式&#xff0c;必须要写在 text 标签内&#xff0c;才能生效 错误示例&#xff1a; <!-- 错误示例 --> <div cl…...

Java 开发工具 IntelliJ IDEA

1. IntelliJ IDEA 简介 IntelliJ IDEA 是一款出色的 Java 集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了丰富的功能和工具&#xff0c;支持多种语言和框架的开发&#xff0c;如 Java、Kotlin、Scala、 Android、Spring、Hibernate 等。IntelliJ IDEA 专注于提高…...

将vsCode 打开的多个文件分行(栏)排列,实现全部显示,便于切换文件

目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能&#xff0c;如下为Visual Studio 2022的该功能界面&#xff1a; 图 1 图 2 当在Visual Studio 2022打开很多文件时&#xff0c;可以按照图1、图2所示找到自…...

java中的同步工具类CountDownLatch

这篇文章主要讲解java中一个比较常用的同步工具类CountDownLatch&#xff0c;不管是在工作还是面试中都比较常见。我们将通过案例来进行讲解分析。 一、定义 CountDownLatch的作用很简单&#xff0c;就是一个或者一组线程在开始执行操作之前&#xff0c;必须要等到其他线程执…...

路由器和交换机的区别

交换机和路由器的区别 交换机实现局域网内点对点通信&#xff0c;路由器实现收集发散&#xff0c;相当于一个猎头实现的中介的功能 路由器属于网络层&#xff0c;可以处理TCP/IP协议&#xff0c;通过IP地址寻址&#xff1b;交换机属于中继层&#xff0c;通过MAC地址寻址(列表)…...

FreeRTOS(动态内存管理)

资料来源于硬件家园&#xff1a;资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、动态内存管理介绍 1、heap_1 2、heap_2 3、heap_3 4、heap_4 5、heap_5 二、动态内存总结与应用 1、heap_1 2、heap_4 3、heap_5 三、内存管理编程测试 1、heap_4 2、h…...

IntelliJ IDEA(简称Idea) 基本常用设置及Maven部署---详细介绍

一&#xff0c;Idea是什么&#xff1f; 前言&#xff1a; 众所周知&#xff0c;现在有许多编译工具&#xff0c;如eclipse&#xff0c;pathon, 今天所要学的Idea编译工具 Idea是JetBrains公司开发的一款强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于Java…...

【LeetCode每日一题】——128.最长连续序列

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 中等 三【题目编号】 128.最长连续序列 四【题目描述】 给定一个未…...

Redis_缓存1_缓存类型

14.redis缓存 14.1简介 穿透型缓存&#xff1a; 缓存与后端数据交互在一起&#xff0c;对服务端的调用隐藏细节。如果从缓存中可以读到数据&#xff0c;就直接返回&#xff0c;如果读不到&#xff0c;就到数据库中去读取&#xff0c;从数据库中读到数据&#xff0c;也是先更…...

模拟 枚举

分享牛客算法基础精选题单题目打卡!!! 目录 字符串的展开 多项式输出 机器翻译 : 铺地毯 : [NOIP2016]回文日期 字符串的展开 原题链接 : 字符串的展开 思路 : 模拟 代码 : #include<iostream> #include<cstring> #include<algorithm> using na…...

【实操】2023年npm组件库的创建发布流程

2022年的实践为基础&#xff0c;2023年我再建一个组件库【ZUI】。步骤回顾&#xff1a; 2022年的npm组件包的发布删除教程_npm i ant-design/pro-components 怎么删除_啥咕啦呛的博客-CSDN博客 1.在gitee上创建一个项目,相信你是会的 2.创建初始化项目&#xff0c;看吧&#…...

缓存设计的典型方案

缓存设计的典型方案 在使用缓存系统的时候&#xff0c;还需要考虑缓存设计的问题&#xff0c;重点在于缓存失效时的处理和如何更新缓存。 缓存失效是在使用缓存时不得不面对的问题。在业务开发中&#xff0c;缓存失效时由于找不到整个数据&#xff0c;一般会出于容错考虑&#…...

SQL笔记

最近的工作对SQL的应用程度较高&#xff0c;而且写的sql类型基本没怎么涉及过&#xff0c;把用到的几个关键字记录下。 使用环境&#xff1a;达梦数据库 达梦数据库有个特点&#xff0c;他有一个叫模式的说法&#xff0c;在图形化工具里直接点击创建查询窗口&#xff0c;不用像…...

UHPC的疲劳计算——兼论ModelCode2010的适用性

文章目录 0. 背景1、结论及概述2、MC10对于SN曲线的调整&#xff08;囊括NC、HPC、UHPC&#xff09;2.1 疲劳失效曲面的构建2.2 新模型的验证 3、MC10对于疲劳设计强度的调整及其背后的原因4. 结语 0. 背景 今年年初&#xff0c;有一位用UHPC做混凝土塔筒的同行告诉我&#xf…...

论文写作卡壳不用愁!这几款AI工具帮你高效赶稿

写论文最怕思路卡壳&#xff1f;大纲憋不出来、正文续写没头绪、降重改到崩溃&#xff0c;还担心AI生成痕迹过不了检测&#xff1f;以下几款实用AI写作工具直击本硕生核心需求&#xff0c;从初稿到答辩全流程辅助&#xff0c;让写作效率直接翻倍。 一、SpeedAI科研小助手&#…...

终极删除命令(强制解锁 + 删文件 + 删目录)

&#x1f525; 终极删除命令&#xff08;强制解锁 删文件 删目录&#xff09;前言 二、使用步骤 // “E:\Documents\HBuilderProjects\个人简历\tmpim” 是想要删除的文件夹 ① 解锁所有被占用的文件&#xff08;解决 “正在使用”&#xff09; cmd taskkill /f /im HBuilde…...

研究表明:员工不懂AI使用方法,企业难辞其咎

员工对AI工具使用方法缺乏了解&#xff0c;这与企业在试点项目、部署和许可证上投入多少资金无关&#xff0c;Forrester的最新研究显示了这一问题。Forrester使用人工智能商数&#xff08;AIQ&#xff09;来衡量员工对AI工具的理解程度&#xff0c;结果数据"令人震惊"…...

基于西门子S7-200 PLC与组态王技术的变频恒压供水控制系统设计与实物制作——软硬件设计详解

基于西门子S7-200 PLC和组态王小区变频恒压供水控制系统的设计&#xff0c;可制作对应实物&#xff0c;软硬件设计今天&#xff0c;我决定深入研究一个自动化控制领域中的典型项目&#xff1a;基于西门子S7-200 PLC和组态王软件的小区变频恒压供水控制系统。这个项目听起来有点…...

2025届学术党必备的十大降重复率平台推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 若维普系统检测出高AI生成内容&#xff0c;那么可采用如下方法来降低AI率&#xff1a;将长句…...

用户智能体交互协议AG-UI(上)

三大Agent协议对比 我们之前已经学习了MCP 和 A2A两个重要的协议了&#xff0c;加上AG-UI&#xff0c;它们共同组成了Agent的三大通信协议体系。 不过&#xff0c;它们的定位各有侧重&#xff0c;并非非此即彼&#xff0c;而是协同使用&#xff0c;用形象的比喻来讲&#xff…...

不只是“生成一张图“:2026年6款真正改变设计工作流的AI界面工具深度测评

AI界面生成工具正在经历从"生成单张界面"到"生成完整产品体验"的代际跃迁。本文深度拆解 UXbot、Figma Make、Google Stitch、Flowstep、Visily AI 和 Moonchild 共6款2026年代表性工具——从设计稿生成到原生代码输出&#xff0c;覆盖完整的产品交付能力谱…...

**发散创新:基于Python与OpenCV的智能交通流量实时监测系统设计

发散创新&#xff1a;基于Python与OpenCV的智能交通流量实时监测系统设计与实现 在智慧城市建设不断深化的背景下&#xff0c;智能交通系统&#xff08;ITS&#xff09; 正成为城市治理现代化的重要突破口。传统的交通信号控制多依赖固定时长或人工经验判断&#xff0c;难以应对…...

开源 + 国产算力:香橙派AIpro打通ROS与大模型,具身智能不再属于少数实验室

从能帮你拿快递的服务机器人&#xff0c;到能在工厂里灵活装配的机械臂&#xff0c;人们不满足于AI只会聊天——我们想要的是能看、能听、能行动的智能体&#xff0c;也就是具身智能机器人。问题来了&#xff1a;要做出一个具身智能机器人&#xff0c;是不是还得像几年前一样&a…...

终极指南:使用android-advancedrecyclerview实现状态保存的拖拽列表

终极指南&#xff1a;使用android-advancedrecyclerview实现状态保存的拖拽列表 【免费下载链接】android-advancedrecyclerview RecyclerView extension library which provides advanced features. (ex. Googles Inbox app like swiping, Play Music app like drag and drop …...