描述:
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]