超详细的Python中与迭代相关的函数

下面要介绍的enumerate、range、zip、reversed、sorted属于Python内置的函数或者类别,返回的对象都可通过迭代方法访问。

一、enumerate函数

1.语法:enumerate(iterable, start=0)

1)该函数Python 2.3. 以上版本可用,2.6 添加 start 参数,返回一个枚举对象,该枚举对象是一个迭代器,该函数将iterable对象中的元素转换成枚举值,并每个元素分配一个从start开始的索引值;

2)参数iterable,表示一个可迭代对象如序列;

3)参数start表示索引值的起始值,默认为0;

4)enumerate() 返回的枚举对象通过next函数或 __next__ 方法返回一个元组,里面包含索引值(从 start 开始,默认为 0)和通过迭代 iterable 获得的对应元素值。

2.对于一个可迭代的(iterable)/可遍历的对象,enumerate可以将其组成一个索引序列,利用它可以同时获得索引和值,这种方式一般用在 for 循环当中;

3.注意其返回值是一个迭代器,遍历访问后元素就清空了

4.举例:

1)s=enumerate('abc',100)?
l =list(s) ?#l的值为:[(100, 'a'), (101, 'b'), (102, 'c')]
2)for index, string in enumerate('ABC',10):print(index,':',string,', ',end='')

输出:

10 : A , 11 : B , 12 : C ,

二、range函数

1.语法:

range(start, stop[, step])

1)返回值是一个不可变的数字序列可迭代对象,类型为range,该数字序列通常用于在 for 循环中循环指定的次数;

2)参数start为可选参数,表示数字序列的起始值,可以省略,默认为0;

3)参数stop为必选参数,表示整数序列的终止值,产生的序列的值必须小于该值,当range只带一个参数调用时,该参数就是stop的值;

4)参数step表示序列两个元素间的步长,也就是序列中相邻两个元素的差值,可选参数,默认为1;每个元素的值r[i]= ?start + step*i ,当step为正整数时产生的序列是升序排序, r[i] < stop,当step为负整数时产生的序列是降序排序, r[i] >stop。

2.说明

1)如果第一个元素 不符合stop值对序列的限制条件,则该 range 对象为空;

2)range 对象支持索引访问,也支持负索引,支持负索引时会将其解读为从正索引所确定的序列的末尾开始索引,这个与序列访问方法一样;

3)range 对象支持切片访问,但与索引访问方式不一样,切片访问返回的还是一个range对象,假设:切片的开始位置索引为s,结束位置为e,当step为正数时则返回的range对象为:

range(start+s*step,max(stop,start+e*step),step)

如果step为负数,则返回的range对象为:

range(start+s*step,min(stop,start+e*step),step)

4)range 类型相比常规 list 或 tuple 的优势在于一个 range 对象总是占用固定数量的(较小)内存,不论其所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子范围的值),某种程度上与生成器表达式类似,但它不属于生成器,也不是迭代器。

5)使用 == 和 != 检测 range 对象是否相等是将其作为序列来比较。 也就是说,如果两个 range 对象表示相同的值序列就认为它们是相等的。 (请注意比较结果相等的两个 range 对象可能会具有不同的 start, stop 和 step 属性,例如 range(0) == range(2, 1, 3) 而 range(0, 3, 2) == range(0, 4, 2)。)

6)注意:在Python3以前有个xrange函数,Python3以后取消了,其功能合并到了range

三、zip函数

1.语法:zip(*iterables)

1)参数说明:iterables表示多个可迭代对象,可以没有;

2)返回值为一个zip对象,这个对象也是一个迭代器,该迭代器中的元素是元组,元组的元素i按参数顺序来自于这多个可迭代对象的第i个元素。当所输入可迭代参数对象中最短的一个被耗尽时,迭代器将停止迭代。 当只有一个可迭代对象参数时,它将返回一个单元组的迭代器。 不带参数时,它将返回一个空迭代器。

2.说明:

1)返回对象可以转换为列表、字典等类型,但转换为字典类型时,zip必须且只能有2个迭代对象作为参数;

2)zip对象是个迭代器,因此遍历一次后元素会清空;

3)要查看其内容,可使用list或dict将其转换为列表

3.举例:按顺序执行下列脚本

numbers=[1,2,3,4,5,6]
ABC=['A','B','C']
abc='abc'
z=zip(numbers,ABC,abc)

list(z) #输出为:

[(1, 'A', 'a'), (2, 'B', 'b'), (3, 'C', 'c')]

z=zip(numbers,ABC,abc) #思考一下,为什么要再次zip?

dict(z) #执行报错,因为使用了3个迭代对象不能创建字典数据

list(z) #输出为:

[(2, 'B', 'b'), (3, 'C', 'c')]

思考一下为什么比上面少了一个?

z=zip(numbers,ABC,abc)?

for n,A,a in z:print(n,A,a,end='; ') #输出为:

1 A a; 2 B b; 3 C c;

四、reversed函数

1.语法:reversed(seq)

2.说明:

1)返回一个与参数对象顺序倒转的 iterator对象,原参数对象保持不变,返回对象类型为reversed,是一个可迭代对象,不能直接访问,可以转换为其他对象或通过for循环方法访问

2)seq 为任何序列或可迭代的对象,必须是一个具有 __reversed__() 方法的对象或者是支持序列协议的对象(支持__len__() 方法和 从0开始的整数类型参数的__getitem__() 方法)

3.举例:

s="AbcD"
s2=reversed(s)

type(s2)#输出:

<class 'reversed'>

list(s2) #输出:

['D', 'c', 'b', 'A']

s保持不变

s2 #输出:

<reversed object at 0x000000000371B1D0>

五、sorted函数

1.语法:

sorted(iterable, *, key=None, reverse=False)

2.说明:

1)根据 iterable 中的项返回一个新的已排序列表,返回值为已排序的列表,原参数iterable 中的数据不会发生变化;

2)key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。 默认值为 None (直接比较元素)

3)reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序

3.举例

s="AbcD"

s1=sorted(s) #s1的数据为:

['A', 'D', 'b', 'c']

s2=sorted(s,key=str.lower) #s2的数据为:

['A', 'b', 'c', 'D']

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

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

相关文章

基于Springboot + Vue 母婴商城系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

基于Java SSM框架实现家庭食谱管理系统项目【项目源码+论文说明】

基于java的SSM框架实现家庭食谱管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个家庭食谱管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论…

自定义神经网络一之Tensor和神经网络

文章目录 前言Tensor神经网络深度神经网络DNN卷积神经网络CNN卷积神经网络有2大特点 循环神经网络RNN残差网络ResNetTransformer自我注意力机制并行效率 总结 前言 神经网络是AI界的一个基础概念&#xff0c;当下火热的神经网络例如RNN循环神经网络或者CNN卷积神经网络&#x…

WLAN 无线局域网、802.11

目录 1 无线局域网的组成 1.1 IEEE 802.11 关联 (association) 建立关联的两种方法 1.2 移动自组网络 无线传感器网络 WSN 无线传感器网络主要的应用领域 2 802.11 局域网的物理层 802.11 的物理层的几种实现方法 1 无线局域网的组成 无线局域网 WLAN (Wireless Lo…

Java+SpringBoot+Vue+MySQL:疫情隔离酒店管理的全面技术解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

断电延时继电器 电源监视继电器 导轨安装 HJZS-E002 AC220V 2S

HJZS-E系列断电延时继电器 系列型号&#xff1a; HJZS-E202断电延时继电器 HJZS-E002断电延时继电器 一 应用 用于直流或交流操作的各种保护和自动控制的装置中&#xff0c;用以增加触点数量。 二 安装结构 导轨安装9壳体结构&#xff0c;具体尺寸参阅外型尺寸图。 三 主要…

Python及Pydev调试程序传递参数方法的实践

在Python中&#xff0c;可以使用sys.argv来获取命令行参数。下面是一个示例的Python脚本&#xff0c;展示了如何通过命令行传递参数并打印输出&#xff1a; import sys# 判断是否有传入参数 if len(sys.argv) > 1:# 获取第二个参数&#xff08;索引为1&#xff09;param s…

【机器人学导论笔记】三、操作臂正运动学

3.1 概述 操作臂正运动学研究操作臂的运动特性&#xff0c;主要涉及与运动有关的几何参数和时间参数。本章中&#xff0c;只研究静止状态下操作臂连杆的位置和姿态。 处理这些复杂的几何参数需要一些步骤&#xff1a;首先需要在操作臂的每个连杆上分别固接一个连杆坐标系&…

SQL注入之order by脚本盲注

一、环境 还是用上次搭建的sql-labs靶机环境 搭建sql注入环境 二、什么是order by盲注 在有的时候我们进行sql注入时&#xff0c;源码的查询语句后面为order by&#xff1b; 众所周知&#xff0c;order by 后面接的字段或者数字不一样&#xff0c;那么这个数据表的排序就会…

【python】学习笔记03-循环语句

3.1 whlie循环的基础语法 - while循环的语法格式 - while循环的注意事项 条件需提供布尔类型结果&#xff0c;True继续&#xff0c;False停止 空格缩进不能忘 请规划好循环终止条件&#xff0c;否则将无限循环 """ 演示while循环基础练习题&#xff1a;求1-10…

计算机组成原理 — 存储器(2)

高速缓冲存储器 大家好呀&#xff01;我是小笙&#xff0c;由于存储器这部分章节内容较多&#xff0c;我分成二部分进行总结&#xff0c;以下是第二部分&#xff0c;希望内容对你有所帮助&#xff01; 概述 目的&#xff1a;避免CPU空等现象 原理&#xff1a;程序访问的局部…

基于Springboot的旅游网管理系统设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的旅游网管理系统设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

NLP 使用Word2vec实现文本分类

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/…

【算法小讲堂】#1 贪心算法

引入——关于贪心算法 我们先来做一个小游戏——现在假设自己是一个小偷&#xff0c;桌上有一些物品&#xff0c;包括一台iPhone15、一个充电宝、一个眼罩和一个溜溜梅。此时&#xff0c;你听说警察即将到来&#xff0c;那么你会先带走哪个东西呢&#xff1f; 一般来讲&#xf…

再次委托|工科背景老师赴美国斯坦福大学自费访学

工科背景的I老师&#xff0c;几年前曾通过我们获得美国哈佛大学医学院的无薪博士后职位&#xff0c;从事医工交叉学科研究。回国完成2年服务期后&#xff0c;I老师再次委托并仍希望去美国顶尖高校&#xff0c;最终我们落实了世界名校斯坦福大学的访问学者职位&#xff0c;满足了…

跨境外贸自动评论脚本开发常用代码!

随着跨境电商的兴起&#xff0c;自动化评论成为了提升销售和客户满意度的重要工具&#xff0c;通过编写自动评论脚本&#xff0c;商家可以快速地在各个平台留下正面评价&#xff0c;提高产品的曝光率和信誉度。 本文将介绍跨境外贸自动评论脚本开发的一些常用代码&#xff0c;…

RabbitMq:RabbitMq 主从镜像模式②

一、模式思想 所有的技术设计思想&#xff0c;基本都在两点上下功夫&#xff1a;1. 生产力上 2. 稳定性上 二、集群模式 今天又有人问起来rabbitmq的高可用方式&#xff0c;因为和常见的主从模式有点区别&#xff0c;所以就记录一下。 rabbitmq集群的镜像队列提供了更高级的主…

【前沿热点视觉算法】-视觉识别的统一卷积和自我注意

计算机视觉算法分享。问题或建议&#xff0c;请文章私信或者文章末尾扫码加微信留言。 1 论文题目 视觉识别的统一卷积和自我注意 2 论文摘要 由于大量的局部冗余和复杂的全局依赖性&#xff0c;从图像和视频中学习区别表示是一项具有挑战性的任务。卷积神经网络&#xff08…

算法沉淀——动态规划之路径问题(leetcode真题剖析)

算法沉淀——动态规划之路径问题 01.不同路径02.不同路径 II03.珠宝的最高价值04.下降路径最小和05.最小路径和06.地下城游戏 01.不同路径 题目链接&#xff1a;https://leetcode.cn/problems/unique-paths/ 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图…

SpringMVC 学习(七)之报文信息转换器 HttpMessageConverter

目录 1 HttpMessageConverter 介绍 2 RequestBody 注解 3 ResponseBody 注解 4 RequestEntity 5 ResponseEntity 6 RestController 注解 1 HttpMessageConverter 介绍 HttpMessageConverter 报文信息转换器&#xff0c;将请求报文&#xff08;如JSON、XML、HTML等&#x…