第4.3节 Python中与迭代相关的函数

Python 内置函数 · 迭代器、生成器相关 本文介绍了Python中的迭代器和生成器相关知识。主要内容包括:1)迭代器概念及其特性(单向遍历、惰性求值、内存高效),以及iter()、next()等内置函数的使用;2)生成器的定义与yield关键字的作用,展示如何创建生成器函数;3)各种推导式(列表、集合、字典)和生成器表达式的语法及应用示例。通过代码演示了迭代器和生成器的实际使用方式,并比较了它们与传统循环和普通函数的区别。这些特性能够有效简化代码并提升内存使用效率。 阅读详情

下面要介绍的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']

    本节介绍了几个常用函数,这些函数都与迭代处理相关,掌握这几个函数有助于理解后面章节的内容。
    老猿Python(https://blog.youkuaiyun.com/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。 

欢迎大家批评指正,谢谢大家关注!

Python 常用迭代函数总结 在Python中,迭代是一种重要的编程概念。通过迭代,我们可以遍历、操作和处理各种数据结构,如列表、元组、字典和集合等。Python提供了许多内置函数,用于在迭代过程中执行各种操作。本文将总结一些常用的Python迭代函数,并提供相应的源代码示例。以上是一些常用的Python迭代函数的总结。通过使用这些函数,我们可以更加方便地处理和操作各种可迭代对象。希望本文对您有所帮助!Python 常用迭代函数总结。 阅读详情

相关推荐

Python中常用的与迭代相关的函数

在Python中,迭代是一种重要的数据处理方式。许多内置的函数可以帮助我们处理迭代对象。接下来,我将为大家介绍一些常用的与迭代相关的函数,并附上相应的源代码。以上就是Python中常用的与迭代相关的函数,它们非常实用,能够帮助我们更加高效地处理迭代对象。Python中常用的与迭代相关的函数。

持续更新 257

python迭代函数

需要注意的是,当一个对象既是可迭代对象,又是迭代器时,它应该返回自己本身。函数则用于返回容器中的下一个元素。如果容器中已经没有元素可以迭代了,是Python中可迭代对象和迭代器的两个核心函数。函数,因此它是一个可迭代对象和迭代器。循环遍历时,Python会自动调用。函数的对象,而迭代器是指实现了。函数用于返回一个迭代器对象,而。函数实现逐个访问元素的功能。函数获取迭代器对象,并使用。,而不是另外一个实现了。可迭代对象是指实现了。在上面的示例代码中,

Carrot_L的博客 594

Python中与迭代相关的函数

本文介绍了一些常用的Python迭代函数,包括range()、enumerate()、zip()、reversed()、iter()和next()函数。通过灵活运用这些函数,我们可以更加方便地对序列和集合进行迭代遍历,并进行相应的操作和处理。迭代是编程中常见的一种重要概念,它允许我们对一个序列或集合中的每个元素进行逐个访问和处理。在Python中,有许多与迭代相关的函数和语法,它们可以帮助我们更方便地实现迭代操作。本文将介绍一些常用的Python迭代函数,并提供相应的源代码示例。

DarcyCode的博客 186

Python 入门学习:内置了4种常用迭代函数

Python 内置了4种常用迭代函数 enumerate(seq) # 编号迭代 sorted(seq) # 排序迭代 reversed(seq) # 翻转迭代 zip(seq1,seq2....) # 并行迭代 a = 'abc' for index,valu...

子曰教育公司-----Mr.牛 1460

【Python3教程】Python3基础篇之迭代器与生成器

在Python3中,迭代器和生成器是处理序列数据的重要工具,它们提供了一种高效、节省内存的方式来遍历集合中的元素。

No8g攻城狮的博客 352

深入解析Dataloader中shuffle机制与随机种子对模型训练的影响

本文深入探讨了Dataloader中shuffle机制与随机种子对机器学习模型训练的影响。通过实际案例分析,详细解释了数据打乱顺序的必要性、随机种子的正确设置方法以及两者协同工作的原理,帮助开发者避免常见陷阱并提升模型训练效果。

weixin_29166013的博客 141

python 跳出函数迭代_第4.3节 Python中与迭代相关的函数

下面要介绍的enumerate、range、zip、reversed、sorted属于Python内置的函数或者类别,返回的对象都可通过迭代方法访问。一、 enumerate函数1. 语法:enumerate(iterable, start=0)1) 该函数Python 2.3. 以上版本可用,2.6 添加 start 参数,返回一个枚举对象,该枚举对象是一个迭代器,该函数将it...

weixin_36341727的博客 172

计算文本相似度的常用算法

NLP、数据挖掘领域中,文本分析是一个很重要的领域,这有助于我们去让计算机理解语言的作用和使用。文本分析是数据挖掘的重要手段,利用文本分析,我们将很快的读取到一本书、一篇文章、一段话中的关键词和核心思想,而文本相似度就是我们用来剔除无用信息或者重复信息的重要手段,让计算机去找文本中的不同。 在生活中,信息检索、数据挖掘、机器翻译、文档复制检测等领域都应用到“文本相似度”。文本不仅仅是文字,文本相似度的应用更广,除了文字的匹配,还可以是图片、音频等,因为它们的实质都是在计算机中都是以二进制的方式存在的。相.

氧小氢的博客 2万+

Python入门:Python3 迭代器与生成器全面学习教程

Python入门:Python3 迭代器与生成器全面学习教程,本文详细讲解了 Python3 中迭代器与生成器的相关知识。迭代器是能记住遍历位置的对象,可通过 iter () 和 next () 方法操作,也能用 for 循环遍历,还可自定义,需实现iter__() 与__next__() 方法并处理 StopIteration 异常。生成器是含 yield 的特殊函数,返回迭代器,能逐步产生值,更简洁高效,适合处理大量数据。文中还对比了二者特性及适用场景,助力读者掌握这两种核心迭代机制。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

ZYNQ千兆网UDP通信实战:从Vivado配置到LWIP优化全流程(附避坑指南)

本文详细介绍了在ZYNQ平台上实现千兆以太网UDP通信的全流程,包括Vivado硬件配置、LWIP协议栈优化及实战代码示例。通过关键参数调整和性能优化,系统吞吐量可提升至850Mbps以上,适用于高速网络通信场景。

weixin_29161785的博客 230

STM32L476低功耗实战:LPTIM精准定时唤醒STOP2模式与系统级功耗优化

本文深入探讨了STM32L476低功耗实战技巧,重点解析了LPTIM精准定时唤醒STOP2模式的配置与优化。通过详细的步骤指南和实战经验分享,帮助开发者实现系统级功耗优化,特别适合电池供电设备开发。文章涵盖LPTIM1定时器配置、STOP2模式进入流程及常见问题排查,助力将整机功耗降至8.2uA级别。

weixin_33686714的博客 435

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

5)使用 == 和!4)参数step表示序列两个元素间的步长,也就是序列中相邻两个元素的差值,可选参数,默认为1;2)seq 为任何序列或可迭代的对象,必须是一个具有 __reversed__() 方法的对象或者是支持序列协议的对象(支持__len__() 方法和 从0开始的整数类型参数的__getitem__() 方法)1)返回一个与参数对象顺序倒转的 iterator对象,原参数对象保持不变,返回对象类型为reversed,是一个可迭代对象,不能直接访问,可以转换为其他对象或通过for循环方法访问。

hakesashou的博客 931

【ESP 保姆级教程】玩转emqx数据集成篇④ ——数据桥接之HTTP服务

主要是学习数据桥接功能以及构建自己的http服务器,这是一个非常有用的功能。包括各种传感器上报基本上都需要数据桥接功能支持,所以还是希望认真学习这一块开发,然后结合数据库存储等等知识点进行进一步学习。

单片机菜鸟哥的博客 1306

Python3 迭代器与生成器

迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。和。

qq_25502783的博客 1029

C#上位机案例:西门子S7协议通信+实时曲线显示(WinForm+ZedGraph)

创建/// PLC数据模型(对应DB1块)/// 采集时间(用于曲线的X轴)set;/// 温度值(℃)set;/// 压力值(MPa)set;/// PLC通信状态set;西门子S7协议通信和实时曲线显示,也是工控现场最常见的场景之一。整个开发过程的关键不在于“写出代码”,而在于“写出符合工控场景的稳定代码”——比如解耦通信逻辑与界面逻辑、处理跨线程问题、限制数据点数量、释放资源等。新手在学习时,建议先跟着步骤搭建好环境,跑通基础功能,再逐步尝试进阶优化。需要注意的是,工控上位机的核心是。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1342

增距镜或中继镜选型

增距镜光路图

camerall 5244

有关python函数总结;可迭代对象、生成器与迭代器的区别;相关函数

(1)trim()函数的实现(利用切片操作实现trim函数,去除字符串首尾的空格): def trim(s): if len(s)==0: return s while s[0]==' ': s=s[1:] while s[-1]==' ': s=s[:-1] return s (2)在list列表中寻找最大值和最小值: ...

qq_40170007的博客 263

【深度学习新浪潮】OpenClaw技术架构详解:从核心组件到生产级优化

OpenClaw 以三层解耦架构 + 四大核心模块为基础,实现了本地优先、易部署、易扩展、易优化的 AI 智能体平台。开发者可通过极简部署快速落地,再通过量化、缓存、并发、分布式等手段持续优化性能,适合从个人助理到企业级自动化的全场景应用。

专注:太空算力、AI infra、异构调度、大模型成本工程 2920

Python 迭代、函数

一、迭代基础知识 用for循环来遍历内存地址,这种做法 数据量少还好,对大量数据并不友好 next() 的功能在内存中,移动指针到下一个地址,减少内存的使用 >>> f=[1,2,3,4] //Flase没包含next的方法, True已经包含了next的方法 >>> iter(f) is f False >&gt...

qq_41782791的博客 1285

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python 跳出函数迭代_Python中的迭代现象相关思考

背景:最近在学习python,关于迭代很多教材都没有清晰描述,查找了一些网上的教程,但总感觉思路不够清晰,于是查阅了相关资料,对python中各种迭代现象及相关机制深入理解,理清概念。什么是迭代:我们通过顺序、分支(if else)、循环(for while)来控制程序的运行,这被称之为控制流根据冯诺依曼模型,计算机所作的就是: 输入数据——处理数据——输出数据我们输入一组数据,需要对其中的每一项...

weixin_40008946的博客 377

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python制图一元迭代函数_超详细的Python中与迭代相关的函数

下面要介绍的enumerate、range、zip、reversed、sorted属于Python内置的函数或者类别,返回的对象都可通过迭代方法访问。一、enumerate函数1.语法:enumerate(iterable, start=0)1)该函数Python 2.3. 以上版本可用,2.6 添加 start 参数,返回一个枚举对象,该枚举对象是一个迭代器,该函数将iterable对象中的元素...

weixin_39629679的博客 252

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python_迭代、函数_4 Day

Python_迭代、函数_4 Day思维导图迭代器函数定义函数语法函数调用变量作用域参数必备参数关键字参数默认参数不定长参数 思维导图 迭代器 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 字符串,列表或元组对象都可用于创建迭代器: 函数 函数是组织好的...

weixin_39464526的博客 199

与序列相关的一些函数

不同的是,sorted可以对字符串等可迭代对象进行排序,并以列表的形式返回一个全新的对象,对原对象不产生影响。语法结构为map(func, *iterables),第一个参数是指定函数计算。第二个参数是要计算的可迭代对象。all()判断可迭代对象中是否所有元素的值都为真;进行遍历(使用)之后,mapped就已经为空了,所以它是一次性的,◆ iterable:指的是可迭代对象,比如列表,元组,集合。len()求一个可迭代对象的长度,有可承受范围,有上限。◆ star:是指定的可选参数,若没有指定,默认为0。

caoancestor的博客 1252

Python函数迭代器与匿名函数相关知识

匿名函数:其实就是没有名字的函数# 匿名函数也是必须加括号才能使用语法格式:lambda 形参:返回值def index(形参):返回值。

m0_71292438的博客 214

python迭代器定义_Python-迭代器相关概念

各概念关系图一些基本概念1 容器可以询问某个元素是否包含其中,如list,set,tuples,dict等都是容器2 迭代器(iterator)1)迭代器是一个带状态的对象,任何实现了iter和next__方法的对象都是迭代器(python2:任何实现next()方法的对象都是迭代器)。2)其中iter返回迭代器本身,next返回容器中的下一个值。如果容器中没有更多元素了,则抛出Stopitera...

weixin_39984403的博客 351
上一篇: 第4.2节 神秘而强大的Python生成器精讲
下一篇: 第4.4节 Python解析与推导:列表解析、字典解析、集合解析
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值