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如何爬取動態網頁數據