当前位置: 首页 > 图灵资讯 > 行业资讯> 超详细的Python中与迭代相关的函数

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

发布时间:2025-09-30 17:25:49

enumeraterateratenumerateraterate、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 开始,默认为 通过迭代 iterable 获得的相应元素值。

2.对于可迭代的(iterable)/对于可以遍历的对象,enumerate可以组成索引序列,可以同时获得索引和值。这种方法通常用于 for 循环当中;

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

4.举例:

1)s=enumerate('abc',100)?
l=list(s)?#l值为:[(100,'a'),(101,'b'),(102,'c')]
2)forindex,stringinenumerate('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 对象支持切片访问,但与索引访问方式不同,切片访问返回一个说唱对象。假设切片的开始位置索引为s,结束位置为e,当step为正数时返回的说唱对象为:

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按参数顺序来自多个可迭代对象的第一个元素。当输入可迭代参数中最短的一个耗尽时,迭代器将停止迭代。 当只有一个可迭代对象参数时,它将返回单元组的迭代器。 它将在没有参数的情况下返回空迭代器。

2.说明:

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

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) #由于使用三个迭代对象无法创建字典数据,因此执行错误报告

list(z) #输出为:

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

想想为什么比上面少了一个。

z=zip(numbers,ABC,abc)?

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

1Aa;2Bb;3Cc;

四、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 #输出:

<reversedobjectat0000000000037B1D>

五、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中与迭代相关的函数

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

2025-09-30
被Python3抛弃的那些函数

被Python3抛弃的那些函数

2025-09-30
Python中各种符号的意义

Python中各种符号的意义

2025-09-30
深入理解python面向对象-类成员

深入理解python面向对象-类成员

2025-09-30
Python异常处理知识点汇总,五分钟就能学会

Python异常处理知识点汇总,五分钟就能学会

2025-09-30
用了这么久的python,这些零碎的基础知识,你还记得多少?

用了这么久的python,这些零碎的基础知识,你还记得多少?

2025-09-30