Python tips—enumerate函数
enumerate函数
1.enumerate函数语法
Python中有一个方便的函数enumerate
,可以枚举index
和元素
,这样不必单独设定tag记录index。
列表、元组、集合都可以使用enumerate
迭代输出。
enumerate函数的基本语法是:
## sequence代表迭代的序列
## start代表迭代序列第一个元素时使用的index
enumerate(sequence, start=0)
2. enumerate函数应用举例
(1)简单使用(同时输出index和element)
## create a sequence
browsers = ['Chrome','Firefox','Opera','Vivaldi']
## create an enumeratable and convert to list
for index,element in enumerate(browsers):
print((index,element)) ## 此处输出为元组,可以少一层括号
## output
(0, 'Chrome')
(1, 'Firefox')
(2, 'Opera')
(3, 'Vivaldi')
(2)指定序列第一个元素的index值
指定第一个元素的index为1,那么对应位置的index就比默认情况(python index第一个为0)大1。
# create an enumeratable and convert to list
for index,element in enumerate(browsers, start=1):
print((index,element))
## output(turple output)
(1, 'Chrome')
(2, 'Firefox')
(3, 'Opera')
(4, 'Vivaldi')
for i in enumerate(browsers):
print(i)
## output (not tueple)
(1, 'Chrome')
(2, 'Firefox')
(3, 'Opera')
(4, 'Vivaldi')
(3)迭代字符串
fruit = "Apple"
for i,j in enumerate(fruit, start=2):
print(i, j)
## output
2 A
3 p
4 p
5 l
6 e
(4)迭代元组
fruits = [(15,"Fifteen"), (12,"Twelve"), (19,"Nineteen")]
for i,j in enumerate(fruits):print(i,j)
## output
0 (15, 'Fifteen')
1 (12, 'Twelve')
2 (19, 'Nineteen')
格式化输出迭代元组结果:
for i,(price,name) in enumerate(fruits):
print(f"index {i}, price {price} and name {name}")
## output
index 0, price 15 and name Fifteen
index 1, price 12 and name Twelve
index 2, price 19 and name Nineteen
(5)与字典结合
a. enumerate
结果转换成字典
l1 = ["a", "b", "c", "d"]
list(enumerate(l1))
## 返回:
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
dict(list(enumerate(l1)))
dict((i,v) for i,v in enumerate(l1))
## 返回字典:
{0: 'a', 1: 'b', 2: 'c', 3: 'd'}
b. 字典中的迭代可以使用items
函数
d = {'a':1, 'b':2, 'c':3}
for i in enumerate(d):
print(i,d[i[1]])
for k,v in d.items():
print(k,v)
(6)统计文件行数 (有时候需要行数作为一个tag)
## count file lines(test.hmp.txt had 1000 lines)
for l in enumerate(open("test.hmp.txt", 'r'), 1): ## start = 1
pass
print( l[0] )
## output
1000
参考:
https://pythonbasics.org/enumerate/
https://blog.csdn.net/fwj_ntu/article/details/106193686