Python中利用enumerate()精简循环中的索引和元素访问
Python中,enumerate() 函数是一个内置函数,用于在遍历序列(如列表、元组或字符串)时同时获取每个元素的索引和值。可以使代码更简洁、更易读,特别是在需要索引时。使用 enumerate() 可以避免使用传统的范围(range())和长度(len())组合来访问元素和它们的索引。
参考文档:
1、不使用 enumerate() 函数
不使用enumerate()时,如要在循环中获取每个元素及其索引,一般操作如下,
my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
print(f"索引:{i}, 元素:{my_list[i]}")
2、使用enumerate()函数
enumerate()是最常用且推荐的方法,因为它既简洁又直观。可以在循环过程中获取每个元素的索引和值。
my_list = ['apple', 'banana', 'cherry']
for index, item in enumerate(my_list):
print(f"索引:{index}, 元素:{item}")
如要从非零索引开始计数,可以给enumerate()提供一个start参数:
my_list = ['apple', 'banana', 'cherry']
for index, item in enumerate(my_list, start=1):
print(f"索引:{index}, 元素:{item}")
3、使用zip()结合range()
如要在循环中同时访问多个列表的元素及其索引,可以使用zip()与range()结合的方法。这种方法特别适用于处理多个并行的序列。
my_list = ['apple', 'banana', 'cherry']
my_list2 = ['dog', 'cat', 'bird']
for index, (item1, item2) in enumerate(zip(my_list, my_list2)):
print(f"索引:{index}, 列表1元素:{item1}, 列表2元素:{item2}")
4、函数说明
1)enumerate() 函数
enumerate() 函数是 Python 中的一个内置函数,非常有用,特别是当你需要在迭代一个序列的同时跟踪元素的索引时。可以将一个可迭代对象(如列表、元组、字符串等)组合为一个索引序列,同时列出数据和数据下标,通常用于 for 循环中。
enumerate(iterable, start=0)
|
参数 |
说明 |
|
iterable |
一个可以迭代的对象,如列表、元组或字符串等。 |
|
start |
可选参数,指定索引起始值,默认为 0。 |
enumerate() 函数返回一个枚举对象。这个枚举对象生成由两个元素组成的元组,分别是索引和在可迭代对象中的值。
2)zip() 函数
Python 的 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表的长度与最短的对象相同。利用 * 操作符,这个函数可以用于解压列表。
# 示例 1: 基本用法
numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
zipped = zip(numbers, letters)
print(list(zipped)) # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]
# 示例 2: 处理不同长度的可迭代对象
numbers = [1, 2, 3]
letters = ['a', 'b']
zipped = zip(numbers, letters)
print(list(zipped)) # 输出:[(1, 'a'), (2, 'b')]
# 示例 3: 解压操作
pairs = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*pairs)
print(numbers) # 输出:(1, 2, 3)
print(letters) # 输出:('a', 'b', 'c')
3)range() 函数
Python 的 range() 函数是一个不可或缺的内置函数,它生成一个数字序列。这个函数非常实用,常用于循环中迭代指定的次数。
range(start, stop[, step])
|
参数 |
描述 |
|
start |
序列的开始值。如果省略,默认从 |
|
stop |
序列结束的边界,不包括此值。这是一个必须指定的参数。 |
|
step |
步长,默认值为 |
# 只指定 stop 参数
print("只指定 stop 参数:")
for i in range(5):
print(i, end=' ')
print('\n')
# 指定 start 和 stop 参数
print("指定 start 和 stop 参数:")
for i in range(2, 6):
print(i, end=' ')
print('\n')
# 同时指定 start、stop 和 step 参数
print("同时指定 start、stop 和 step 参数:")
for i in range(0, 10, 2):
print(i, end=' ')
print('\n')
# 将 range() 的结果转换为列表
numbers = list(range(5))
print("将 range() 的结果转换为列表:")
print(numbers)
参考文档:
浙公网安备 33010602011771号