enumerate: python的内置函数之一,中文意思为“枚举”,即将所有元素逐个列举出来。
如何使用?通过一个简单的例子了解下
1、实例引入,循环打印列表的下标和对应值
- 循环实现
L = ['jc','yf','xbz','xdg']
for i in range(len(L)):
print(i,L[i])
- 使用enumerate函数
L = ['jc','yf','xbz','xdg']
for index,value in enumerate(L):
print(index,value)
结果:
0 jc
1 yf
2 xbz
3 xdg
看起来与使用循环差不多,但可以同时得到下标和对应值。
用法也很简单,enumerate(可迭代对象)。下面我们看下源码
2、源码解析
-
功能注释
如上图所示,enumerate用来迭代可迭代对象的下标和对应值,每次yield一个包含下标和值的元组。
注:
迭代与可迭代对象见【python实用特性】- 迭代、可迭代对象、迭代器
yield生成器见【python实用特性】- yield生成器 -
返回内容
如果我们直接打印print(enumerate(L))
,那得到的是一个<enumerate object at 0x000002908244ED38>
,即一个enumerate对象。
将其用list转换下:L = ['jc','yf','xbz','xdg'] print(list(enumerate(L)))
结果:
[(0, 'jc'), (1, 'yf'), (2, 'xbz'), (3, 'xdg')]
-
start参数
由源码可知,除了可迭代对象外,enumerate还有一个start参数,即起始下标设置,默认为0。也可以更改,如下:print(list(enumerate(L,start=1))) #更改起始下标为 1
输出:
[(1, 'jc'), (2, 'yf'), (3, 'xbz'), (4, 'xdg')]
博主其他系列文章:
[1] 【python实用特性】-切片
[2] 【python实用特性】- 迭代、可迭代对象、迭代器
[5] Python如何爬取动态网页数据