一、enumerate函数介绍:
在 Python 中,enumerate 函数是一个用于将一个可迭代对象转换成一个 enumerate 对象的函数,同时也在循环中同时迭代元素和索引值。
二、语法
enumerate(iterable, start=0)
参数说明iterable:必选参数,表示可迭代对象,如列表、元组、字符串、集合、字典等
start:可选参数,表示开始计数的索引值,如果不选则默认从0开始
三、我个人的一些学习尝试
用python实现与enumerate函数同等功能
lst = ["a", "b", "c", "d", "e", "f", "g"]
for i in range(len(lst)):
print(i, lst[i])
"""
运行结果:
0 a
1 b
2 c
3 d
4 e
5 f
6 g
"""
用enumerate函数实现的代码
lst = ["a", "b", "c", "d", "e", "f", "g"]
for idx, date in enumerate(lst):
print(idx, date)
运行结果与上面一样
接下来我便想,既然是对一切可迭代对象都能用,那对字典,集合,字符串使用的话是什么样的情况呢,于是我做了下面的尝试
str1 = "abcdefg"
print(enumerate(str1, start=1))
# 这里输出了enumerate对象的内存地址
for i in enumerate(str1, start=1):
print(i)
# 这里输出的是元组类型,说明enumerate对象生成的每一个元素是元组类型
"""
运行结果:
<enumerate object at 0x000002D308101480>
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
(5, 'e')
(6, 'f')
(7, 'g')
"""
接下来我又尝试了集合
set1 = {"a", "b", "c", "d", "e", "f", "g"}
for idx, date in enumerate(set1, start=1):
print(idx, date)
"""
运行结果:
1 b
2 c
3 e
4 a
5 d
6 g
7 f
"""
这里每一次运行的结果都会不一样,因为我们的集合是无序的,到这越来越有意思了,让我不禁发问,那么对于字典又会发生什么呢?
dict1 = {"name": "Tom", "age": 18, "gender": "男"}
for idx, date in enumerate(dict1, start=1):
print(idx, date, dict1[date])
"""
运行结果:
1 name Tom
2 age 18
3 gender 男
"""
通过观察我们可以发现,在对字典容器使用enumerate函数的时候,他返回给我们的元组里面包括的是序列和字典中的每一个key,故我们可以通过key访问对应的value