1. 程式人生 > 其它 >學習python -- 第020天 enumerate函式

學習python -- 第020天 enumerate函式

enumerate()簡介

enumerate()是用來遍歷一個可迭代容器中的元素,同時通過一個計數器變數記錄當前元素所對應的索引值。

示例如下:

 1 names = ['Bob', 'Alice', 'Guido']
 2 for index, value in enumerate(names):
 3     print(f'{index}: {value}')
 4 
 5 '''
 6 輸出
 7 0: Bob
 8 1: Alice
 9 2: Guido
10 '''

正如你所看到的,這個迴圈遍歷了names列表的所有元素,並通過增加從零開始的計數器變數來為每個元素生成索引。

enumerate()
讓你的迴圈更加Pythonic

那麼為什麼用enumerate()函式去儲存執行中的索引很有用呢?

有很多從C或Java背景轉過來的新的Python開發人員有時使用下面這種range(len(...))方法來儲存執行中每個元素的索引,同時再用for迴圈遍歷列表:

1 # 警告: 不建議這麼寫
2 
3 for i in range(len(my_items)):
4 
5     print(i, my_items[i])

通過巧妙地使用enumerate()函式,就像我在上面的"names"例子中寫的那樣,你可以使你的迴圈結構看起來更Pythonic和地道。

你不再需要在Python程式碼中專門去生成元素索引,而是將所有這些工作都交給enumerate()

函式處理即可。這樣,你的程式碼將更容易被閱讀,而且減少寫錯程式碼的影響。(寫的程式碼越多,出錯機率越高,儘量將自己的程式碼看起來簡潔,易讀,Pythonic,才是我們的追求)

修改起始索引

另一個有用的特性是,enumerate()函式允許我們為迴圈自定義起始索引值。enumerate()函式中接受一個可選引數,該引數允許你為本次迴圈中的計數器變數設定初始值:

 1 names = ['Bob', 'Alice', 'Guido']
 2 for index, value in enumerate(names, 1):
 3     print(f'{index}: {value}')
 4
5 ''' 6 輸出 7 1: Bob 8 2: Alice 9 3: Guido 10 11 '''

在上面的例子中,我將函式呼叫改為enumerate(names,1),後面的引數1就是本次迴圈的起始索引,替換預設的0:

OK,這段程式碼演示的就是如何將Python的enumerate()函式預設0起始索引值修改為1(或者其他任何整形值,根據需求去設定不同值)

認清現實,放棄幻想。 細節決定成敗,心態放好,認真學習與工作。