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

第40讲:Python for-in循环语句使用索引遍历序列

文章目录

    • 方法一:遍历的是序列的元素
    • 方法二:遍历的是序列的索引
    • 方法三:while循环遍历实现
    • 方法四:调用内置函数enumerate实现
      • 1.什么是enumerate函数
      • 2.调用内置函数enumerate实现索引遍历序列

如果在遍历序列的过程中,需要访问元素的索引,例如通过索引去查找指定的元素,中心思想就是遍历索引号,通过每次循环的索引号在序列里找到对应的元素。

方法一:遍历的是序列的元素

在for循环开始前,定义一个初始变量,这个变量的值为0,序列中第一个索引是从0开始,然后循环遍历序列本身,每次循环后都对初始遍历+1,下次循环的时候就可以找序列中的第二个索引对应的元素,每次循环的时候都将索引对应的元素打印出来。

mylist = ['jiangxl', 'K8S', 'DevOps']
index = 0#循环遍历的还是列表中的元素
for elem in mylist:#打印序列中索引对应的元素myformat = 'mylist[{}] ---> {}'print(myformat.format(index, elem))#每次遍历index的值都+1,索引值每次都不同index += 1

效果如下,循环遍历序列中的元素,每次循环时索引号都+1,以获取列表中的每个索引对应的元素,每次循环时将索引对应的元素都打印出来。

image-20220814144315334

方法二:遍历的是序列的索引

for循环遍历的对象是序列中的索引,这个方法主要是通过len函数计算出序列的长度,然后使用range函数根据len函数的结果生产一个序列,这个序列中就包含了序列中所有元素对应的索引号。

循环遍历的是序列包含所有索引的整数序列,因此无需事先声明一个初始变量,每次循环时,自定义变量都会拿到具体的索引号,从而得到索引对应的元素。

mylist = ['jiangxl', 'K8S', 'DevOps']#通过len函数得到列表的长度,然后使用range函数根据这个长度创建出一个整数序列,在这个序列中包含列表的所有索引号,循环遍历这个整数序列
for index in range(len(mylist)):myformat = 'mylist[{}] ---> {}'#打印本次循环的索引号,以及索引对应的元素print(myformat.format(index, mylist[index]))

image-20220814144315334

方法三:while循环遍历实现

在while循环中,也可以去遍历序列,我们根据索引去遍历序列中的元素。

首先定义一个初始变量0,作为第一个索引号,然后使用while循环判断一个条件,当初始值小于序列长度时,则打印当前循环的索引号,以及索引号在列表中对应的元素,并且每次循环都为初始变量+1。

mylist = ['jiangxl', 'K8S', 'DevOps']
index = 0#当index的值小于列表的长度时,开始循环
while index < len(mylist):myformat = 'mylist[{}] ---> {}'print(myformat.format(index, mylist[index]))index += 1

image-20220814144315334

方法四:调用内置函数enumerate实现

1.什么是enumerate函数

enumerate函数可以将一个有序序列(如列表、元组、字符串)组合成一个带索引元素、元素本身的元组,enumerate函数返回值是一个迭代器对象,可以通过list函数转换成列表格式。

使用enumerate函数,可以手动指定索引的起始值

enumerate函数的语法格式:

enumerate(序列, 起始索引值)

将一个列表通过enumerate函数转换成带有索引、元素的对象。

1)enumerate函数返回值是一个迭代器对象

mylist = ['jiangxl', 'K8S', 'DevOps']
print(enumerate(mylist))#输出结果:<enumerate object at 0x000001B83AB6ACC0>

2)可以通过list函数将enumerate返回值转换为列表

print(list(enumerate(mylist)))#输出结果:[(0, 'jiangxl'), (1, 'K8S'), (2, 'DevOps')]

可以看到enumerate函数会将序列中每个元素对应的索引都放在一个元组中,每个元组里只有两个元素,第一个元素是索引,第二个元素是序列元素的本身。

image-20220814151949224

3)还可以指定索引的起始值

指定索引的起始值为1。

print(list(enumerate(mylist, 1)))#输出结果:print(list(enumerate(mylist, 1)))

此时序列的第一个元素的索引就是从1开始。

image-20220814152134674

2.调用内置函数enumerate实现索引遍历序列

enumerate函数对序列重组后返回的结果是一个列表,在列表中的每一个元素都是元组,且每个元组中有2个元素,基于这种情况,我们就可以运用字典items方法的遍历方式。

循环遍历enumerate函数的返回结果(索引、元素组合成的列表),在for循环中定义两个自定义变量,每次遍历获取列表中的一个元素,这个元素就是元组,元组中的第一个元素赋值给自定义变量1,第二个元素赋值给自定义变量2。

mylist = ['jiangxl', 'K8S', 'DevOps']for index,elem in list(enumerate(mylist)):myformat = 'mylist[{}] ---> {}'print(myformat.format(index, elem'''
代码解释:list(enumerate(mylist))的结果为[(0, 'jiangxl'), (1, 'K8S'), (2, 'DevOps')]for循环遍历list(enumerate(mylist))的结果,每次遍历得到列表中的一个元组元素,第一次为:(0, 'jiangxl'),第二次为: (1, 'K8S'),第三次为:(2, 'DevOps')按照元素的多变量赋值的特性,每次遍历的代码就是:index,elem = (0, 'jiangxl'),以此类推......元组中的第一个元素赋值给变量index,元组中第二个元素赋值给变量elem最后每次循环打印对应的变量值
'''                          

image-20220814144315334

enumerate函数返回值是一个迭代器对象,虽然我们看不懂,但是Python解释器能够读懂,因此我们也可以在遍历时不将其转换成列表,也是可以遍历的。

mylist = ['jiangxl', 'K8S', 'DevOps']for index,elem in enumerate(mylist):myformat = 'mylist[{}] ---> {}'print(myformat.format(index, elem

相关文章:

第40讲:Python for-in循环语句使用索引遍历序列

文章目录 方法一&#xff1a;遍历的是序列的元素方法二&#xff1a;遍历的是序列的索引方法三&#xff1a;while循环遍历实现方法四&#xff1a;调用内置函数enumerate实现1.什么是enumerate函数2.调用内置函数enumerate实现索引遍历序列 如果在遍历序列的过程中&#xff0c;需…...

如何用Jmeter压测Netty的Echo服务之自定义Jmeter的Java Sampler

前言 如果想要压测一些三方组件&#xff0c;比如MQ&#xff0c;redis什么的&#xff0c;jmeter本身是不支持的。 本文以开发一个压测netty的echo示例&#xff0c;说明如何自定义jmeter的sampler。 开发 本文以idea示例&#xff0c; 新建工程 打开idea新建一个空的maven工程…...

GPT3.5之运用之检查模型是否满足条件

策略三&#xff1a;要求模型检查是否满足条件* 如果任务做出的假设不一定满足&#xff0c;我们可以告诉模型先检查这些假设&#xff0c;如果不满足&#xff0c;指示并停止执行。你还可以考虑潜在的边缘情况以及模型应该如何处理它们&#xff0c;以避免意外的错误或结果。 在如…...

【TCP为什么需要粘包和拆包】

如今&#xff0c;大半个互联网都建立在 TCP 协议之上&#xff0c;我们使用的 HTTP 协议、消息队列、存储、缓存&#xff0c;都需要用到 TCP 协议——这是因为 TCP 协议提供了可靠性。简单来说&#xff0c;可靠性就是让数据无损送达。但若是考虑到成本&#xff0c;就会变得非常复…...

Python | 人脸识别系统 — 姿态检测

本博客为人脸识别系统的姿态检测代码解释 人脸识别系统博客汇总&#xff1a;人脸识别系统-博客索引 项目GitHub地址&#xff1a;Su-Face-Recognition: A face recognition for user logining 注意&#xff1a;阅读本博客前请先参考以下博客 工具安装、环境配置&#xff1a;人脸…...

为什么说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展&#xff0c;一些趋势和发展可能对2023年网络安全行业产生影响&#xff1a; 5G技术的广泛应用&#xff1a;5G技术的普及将会使互联网的速度更快&#xff0c;同时也将带来更多的网络威胁和安全挑战。网络安全…...

谷粒商城二十四Sentinel限流熔断降级

我们在秒杀服务加的以上所有手段都是为了快&#xff0c;除了快之外&#xff0c;我们还需要保证稳定。 我们即使再快也会有一个极限值&#xff0c;现在假设单机下每秒处理一万个单&#xff0c;这已经是超高的处理能力了&#xff0c;秒杀服务上了五台服务器&#xff0c;有三台掉…...

STM32-HAL-SPI-W25Q128FV简单读写测试(2)

文章目录 一、Flash的基本读写操作1.1 向芯片中的某个地址&#xff08;addr:0x02&#xff09;连续写入不定长的数据并读取代码示例读写流程分析函数分析 1.2 向芯片中的某个地址&#xff08;addr:0x00&#xff09;写入一个数值代码示例&#xff1a;读写流程分析 具体的配置接上…...

网易一面:如何设计线程池?请手写一个简单线程池?

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如极兔、有赞、希音、百度、网易的面试资格&#xff0c;遇到了几个很重要的面试题&#xff1a; 如何设计线程池&#xff1f; 与之类似的、其他小伙伴遇到过的问题还有&#xff1a; …...

网络安全之密码学

目录 密码学 定义 密码的分类 对称加密 非对称加密 对称算法与非对称算法的优缺点 最佳解决办法 --- 用非对称加密算法加密对称加密算法的密钥 非对称加密如何解决对称加密的困境 密钥传输风险 密码管理难 常见算法 对称算法 非对称算法 完整性与身份认证最佳解决…...

第14章 项目采购管理

文章目录 采购管理包括如下几个过程14.2 编制采购计划 462编制采购计划的输出1&#xff09;采购管理计划2&#xff09;采购工作说明书3&#xff09;采购文件 14.2.3 工作说明书&#xff08;SOW&#xff09; 14.3 实施采购 47414.3.2 实施采购的方法和技术 476&#xff08;1&…...

Vite+Vue下的多页面入口配置

我发现多页面入口配置在网上的资料比较乱&#xff0c;今天正好结合我们的开源API分析工具项目&#xff08;APIcat&#xff09;更新情况总结一下。 更新vite.config.js 主要配置的更新是在vite.config.js里面要增加build里的rollupOptions&#xff0c;因为vite底层使用了rollu…...

ChatGPT背后的打工人:你不干,有的是AI干

AI“出圈” 如今&#xff0c;数字技术发展速度惊人&#xff0c;AI提高了社会生产效率&#xff0c;更真切地冲击到原有的生产秩序。 年初AI技术的爆发&#xff0c;让国内看到了进一步降本增效的希望。 国内多家互联网企业相继推出类ChatGPT产品&#xff0c;复旦大学邱锡鹏教授…...

【Access】Access:SQL 语句汇总

目录 一、SQL 的功能 二、考试重点 三、关系的定义 &#xff08;1&#xff09;新建关系 &#xff08;2&#xff09;删除关系 四、SQL 的「数据查询」功能 &#xff08;1&#xff09;基本结构 ① Select 语句的基本结构 ② Select 子句 ③ Where 子句 ④ 空值的处…...

【小样本分割 2022 ECCV】SSP

文章目录 【小样本分割 2022 ECCV】SSP摘要1. 介绍2. 相关工作3. 自支持小样本语义分割3.1 动机3.2 自支持原型-SSM3.3 自适应自支持背景原型-ASBP3.4 自支持匹配-SSL 3. 代码 【小样本分割 2022 ECCV】SSP 论文题目&#xff1a;Self-Support Few-Shot Semantic Segmentation 中…...

Friendlycore增加inodes数量

背景&#xff1a;为Nanopim1安装了core系统&#xff0c;tf卡大小64G&#xff0c;安装后正常扩展到了整个tf卡&#xff0c;但是在安装hass的docker显示磁盘空间不够&#xff0c;最终发现是inode被用完了。其inode只有960K&#xff0c;但是16G卡树莓派系统的inodes都是其两倍。 一…...

Latex 定理和证明类环境(amsthm)和(ntheorm)的区别

最近在写毕业论文&#xff0c;出现了一些定理和证明的环境的问题&#xff0c;问题出现在对两个包的理解程度不够的问题上&#xff1a; \RequirePackage{ntheorem} 1、\newtheorem*{proof}{\hspace{2em}证:} 这个是让证明失去计数原则&#xff0c;该命令不能用于 amsthm 2…...

Yolov8改进---注意力全家桶,小目标涨点

💡💡💡💡💡💡💡💡💡💡注意力全家桶💡💡💡💡💡💡💡💡💡💡💡 基于Yolov8的注意力机制研究,提升小目标、遮挡物、难样本等检测性能...

[Linux]网络连接、资源共享

​⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;Linux基础操作。本文主要是分享一些Linux系统常用操作&#xff0c;内容主要来源是学校作业&#xff0c;分享出来的…...

来上海一个月的记录、思考和感悟

作者 | gongyouliu 编辑 | gongyouliu 从4月3号早上来上海&#xff0c;到今天差不多整整一个月了&#xff0c;也是自己正式从杭州离职创业&#xff08;我更愿意称之为自由职业者&#xff0c;毕竟我没有招聘全职员工&#xff0c;有两个朋友业余时间在帮我&#xff09;的第一个月…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&&#xff1a;逻辑与 ||&#xff1a;逻辑或 &#xff01;&#xff1a;逻辑非 短路求值 位运算符 按位与&&#xff1a; 按位或 | 按位取反~ …...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...