一、什麼是enumerate函數
在Python的標準函數庫中,我們可以找到一個叫做enumerate()的非常有用的函數。該函數的作用是為列表和其他可遍歷的對象,在遍歷的時候,自動生成一個計數器,用於計數遍歷的元素的序號。
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)
輸出結果為:
0 apple
1 banana
2 cherry
enumerate()函數返回包含兩個元素的元組,第一個元素是計數器的值,第二個元素是可迭代對象中對應的元素。
二、enumerate函數的用途
一個常見的使用場景是遍歷列表時需要知道元素的下標,同時又不想自己維護一個下標計數器,這時候就可以使用enumerate()函數。
1. 在遍歷列表時獲取元素下標
在遍歷列表時,需要使用元素的下標,可以使用正常的for循環遍歷,然後使用range(len(list))的方式獲取對應下標的元素。但是,這種方式顯然不夠簡單優雅。可以使用enumerate()函數,代碼如下:
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)
2. 將列錶轉換為字典
有時候需要將一個列錶轉換成字典,字典的鍵是列表的元素,而字典的值是元素在列表中的下標。可以使用enumerate()函數配合字典推導式完成這個任務,代碼如下:
fruits = ["apple", "banana", "cherry"]
fruit_dict = {fruit: index for index, fruit in enumerate(fruits)}
print(fruit_dict)
輸出結果為:
{'apple': 0, 'banana': 1, 'cherry': 2}
3. 實現多個可變參數的遍歷
在某些場景中,需要同時遍歷多個可變參數的元素,就可以使用enumerate()函數。
fruits = ["apple", "banana", "cherry"]
prices = [1.5, 2, 3.5]
for index, (fruit, price) in enumerate(zip(fruits, prices)):
print(f"#{index}: {fruit} costs {price} dollars.")
輸出結果為:
#0: apple costs 1.5 dollars.
#1: banana costs 2 dollars.
#2: cherry costs 3.5 dollars.
三、enumerate函數的實現原理
enumerate()函數的實現其實非常簡單,它的源代碼可以以以下方式來實現:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
該函數定義了一個iterable對象(sequence),並使用yield返回包含計數器n和元素elem的二元組。在for循環期間,該函數自動增加計數器n的值,這樣,enumerate()函數就自動在可迭代對象上遍歷並返回計數器值和與之對應的元素。
原創文章,作者:WOMO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150022.html