學習python -- 第020天 enumerate函式
阿新 • • 發佈:2021-08-16
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}') 45 ''' 6 輸出 7 1: Bob 8 2: Alice 9 3: Guido 10 11 '''
在上面的例子中,我將函式呼叫改為enumerate(names,1)
,後面的引數1就是本次迴圈的起始索引,替換預設的0:
OK,這段程式碼演示的就是如何將Python的enumerate()
函式預設0起始索引值修改為1(或者其他任何整形值,根據需求去設定不同值)