描述:
enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。其英文意為:枚舉,列舉.
函數說明:
- 語法:
1 enumerate(sequence, [start=0]) 2 參數:sequence -- 一個序列、迭代器或其他支持迭代對象。 3 start -- 下標起始位置。
- 舉例說明:存在一個sequence,對其使用enumerate將會得到如下結果:
1 start sequence[0] 2 start+1 sequence[1] 3 start+2 sequence[2]......
具體例子:
實例1:
1 >>> sessions = ['a', 'b', 'c', 'd'] 2 >>> for i, element in enumerate(sessions): 3 ... print(i,element) 4 ... 5 0 a 6 1 b 7 2 c 8 3 d 9 10 >>> sessions = ['a', 'b', 'c', 'd'] 11 >>> for i, element in enumerate(sessions, 1): # 第二個參數表示下標開始的位置,取值為1表示下標從1開始計算.默認為0 12 ... print(i,element) 13 ... 14 1 a 15 2 b 16 3 c 17 4 d
實例2:
1 #列表 2 >>> list = [1, 2, 3, 4, 5, 6] 3 >>> list[::-1] 4 [6, 5, 4, 3, 2, 1] 5 >>> for index, item in enumerate(list): 6 ... print(index, item) 7 ... 8 0 1 9 1 2 10 2 3 11 3 4 12 4 5 13 5 6 14 15 #字符串 16 >>> for i, j in enumerate('abcde'): 17 ... print(i, j) 18 ... 19 0 a 20 1 b 21 2 c 22 3 d 23 4 e 24 25 #數組 26 >>> for i, j in enumerate(('a', 'b', 'c', 'd', 'e')): 27 ... print(i, j) 28 ... 29 0 a 30 1 b 31 2 c 32 3 d 33 4 e 34 35 #字典 36 >>> for i, j in enumerate({'a':1, 'b':2}): 37 ... print(i, j) 38 ... 39 0 a 40 1 b
41
42 #集合
43 >>> for i, j in enumerate({'d', 'b'}):
44 ... print(i, j)
45 ...
46 0 d
47 1 b
實例3:
1 #如果要統計文件的行數,可以這樣寫: 2 count = len(open(filepath, 'r').readlines()) 3 #這種方法簡單,但是可能比較慢,當文件比較大時甚至不能工作。 4 5 #可以利用enumerate(): 6 count = 0 7 for index, line in enumerate(open(filepath,'r')): 8 count += 1
實例4:sort_array[5, 3, 2, 8, 1, 4]==[1, 3, 2, 8, 5, 4]
def sort_array(arr): odd_index = [ind for (ind, val) in enumerate(arr) if val%2==1] # 取出奇數的索引值,本例[0, 1, 4] sort_odd = sorted([odd for odd in arr if odd%2==1]) # 將奇數序列排序[1, 3, 5] j = 0 for i in odd_index: # i分別為0, 1, 4 arr[i] = sort_odd[j] # arr[0] = 1, arr[1] = 3, arr[4] = 5 j+=1 return arr if arr!=[] else[] # arr = [1, 3, 2, 8, 5, 4] arr = [5, 3, 2, 8, 1, 4] new_arr = sort_array(arr) print(new_arr) output: [1, 3, 2, 8, 5, 4]