Python之enumerate用法
原创大约 3 分钟
Python之enumerate用法
enumerate()
是 Python 的一个内置函数,用于将可迭代对象(如列表、元组或字符串)组合为一个索引序列,通常在 for 循环中用来获取元素的索引和值。下面是enumerate()
的详细用法和示例。
1. 基本用法
enumerate()
的基本语法是:
enumerate(iterable, start=0)
iterable
是一个可迭代对象,如列表、元组或字符串。start
是索引的起始值,默认是 0。
示例:
# 基本用法
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(index, fruit)
# Output:
# 0 apple
# 1 banana
# 2 cherry
2. 指定起始索引
可以通过 start
参数指定索引的起始值。
示例:
# 指定起始索引为 1
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits, start=1):
print(index, fruit)
# Output:
# 1 apple
# 2 banana
# 3 cherry
3. 结合列表推导式使用
可以将 enumerate()
和列表推导式结合使用,生成索引和值的列表。
示例:
# 结合列表推导式
fruits = ['apple', 'banana', 'cherry']
indexed_fruits = [(index, fruit) for index, fruit in enumerate(fruits)]
print(indexed_fruits)
# Output: [(0, 'apple'), (1, 'banana'), (2, 'cherry')]
4. 用于字符串
enumerate()
可以用于字符串,获取每个字符的索引和值。
示例:
# 用于字符串
text = "hello"
for index, char in enumerate(text):
print(index, char)
# Output:
# 0 h
# 1 e
# 2 l
# 3 l
# 4 o
5. 用于元组
enumerate()
可以用于元组,获取每个元素的索引和值。
示例:
# 用于元组
numbers = (10, 20, 30)
for index, number in enumerate(numbers):
print(index, number)
# Output:
# 0 10
# 1 20
# 2 30
6. 结合字典使用
虽然 enumerate()
不能直接用于字典,但可以用于字典的键、值或键值对的视图。
示例:
# 结合字典使用
student_grades = {'Alice': 85, 'Bob': 75, 'Charlie': 95}
# 对键进行枚举
for index, key in enumerate(student_grades.keys()):
print(index, key)
# Output:
# 0 Alice
# 1 Bob
# 2 Charlie
# 对值进行枚举
for index, value in enumerate(student_grades.values()):
print(index, value)
# Output:
# 0 85
# 1 75
# 2 95
# 对键值对进行枚举
for index, (key, value) in enumerate(student_grades.items()):
print(index, key, value)
# Output:
# 0 Alice 85
# 1 Bob 75
# 2 Charlie 95
7. 用于多维列表
enumerate()
可以用于多维列表,获取每个子列表的索引和值。
示例:
# 用于多维列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row_index, row in enumerate(matrix):
for col_index, value in enumerate(row):
print(f"matrix[{row_index}][{col_index}] = {value}")
# Output:
# matrix[0][0] = 1
# matrix[0][1] = 2
# matrix[0][2] = 3
# matrix[1][0] = 4
# matrix[1][1] = 5
# matrix[1][2] = 6
# matrix[2][0] = 7
# matrix[2][1] = 8
# matrix[2][2] = 9
8. 用于生成器
enumerate()
可以与生成器一起使用,以便在迭代过程中获取索引和值。
示例:
# 用于生成器
def generate_numbers():
for i in range(1, 6):
yield i
for index, number in enumerate(generate_numbers(), start=1):
print(index, number)
# Output:
# 1 1
# 2 2
# 3 3
# 4 4
# 5 5
注意事项
enumerate()
函数返回一个枚举对象,该对象生成包含索引和元素的元组。- 可以指定起始索引,默认为 0。
- 常用于遍历带有索引的迭代器。
写在最后
enumerate()
是一个强大的工具,特别是在需要获取索引和值的情况下。它可以与各种可迭代对象一起使用,如列表、元组、字符串、字典视图和生成器,提供了简洁且高效的迭代方式。通过指定起始索引,还可以灵活地调整索引值。