如何在 Python 的 for 循环中访问索引?

2025年1月5日 | 阅读6分钟

在 Python 中,使用 for 循环时,有多种方法可以访问序列(如列表或字符串)中的索引和对应值。每种方法都有其优点和用例,根据代码的具体要求提供灵活性。本文将介绍可以访问 for 循环索引值的不同方法。

  1. 使用 enumerate() 函数
  2. 使用 zip() 函数
  3. 使用 range() 函数
  4. 使用列表推导式
  5. 使用 map() 函数
  6. 使用手动索引
  7. 使用 itertools.count
  8. 使用反向索引

使用 enumerate() 函数

enumerate() 函数是在 for 循环中迭代序列(如列表或字符串)时访问索引值的强大工具。此函数以可迭代对象为参数,并在每次迭代时返回索引和对应元素的对。

程序

输出

Index: 0, Value: 10
Index: 1, Value: 20
Index: 2, Value: 30
Index: 3, Value: 40
Index: 4, Value: 50 

说明

此示例将 enumerate() 函数应用于列表 my_list。在每次迭代中,index 变量保存当前索引,value 变量保存对应元素。之后,我们打印了索引及其对应的所有值。

从不同索引开始

我们可以通过修改 enumerate() 函数来获取从不同数字开始的索引值,而不是从零开始获取索引值。

下面是一个演示程序,展示了如何访问从非零值开始的 for 循环的索引值。

程序

输出

Names= ["Radha", "Hari", "Krishna", "Shiva", "Mohan"]

for Pin, Name in enumerate(Names,start=1601207329):
    print(f"Pin: {Pin}, Name: {Name}")

说明

我们创建了一个名字列表,并使用带 for 循环的 enumerate() 函数来迭代列表。该函数返回索引和元素的对,其中 Pin 代表索引,Name 代表对应的名字。我们使用了 start=1601207329 参数来指定索引的起始值。在循环内,我们打印了每次迭代的索引 (Pin) 和名字,以跟踪配对。

使用 zip() 函数

zip() 函数是 Python 中的内置函数,它允许您将来自两个或多个可迭代对象的元素组合成元组。

您可以使用 zip() 和 range() 创建索引-项对。range(len(iterable)) 会生成一个数字序列,表示可迭代对象的索引。让我们看一个程序示例,演示如何使用 range() 和 zip() 函数为可迭代对象生成索引值。

程序

输出

Index: 0, Value: 10
Index: 1, Value: 20
Index: 2, Value: 30
Index: 3, Value: 40
Index: 4, Value: 50

说明

在此示例中,range(len(Numbers_list)) 生成与 Numbers_list 长度对应的索引序列,zip() 将其与 Numbers_list 中的元素组合起来。在每次迭代中,index 变量保存当前索引,value 变量保存对应元素,因此我们在每次迭代中都打印了索引和值。

使用 range() 函数

range() 函数创建一个不可变的数字序列,通常与 for 循环一起使用来迭代特定范围的值。

程序

输出

Marks_list = [100, 240, 330, 430, 540]

for Index in range(len(Marks_list)):
    Marks = Marks_list[Index]
    print(f"Index: {Index}, Marks: {Marks}")

说明

我们初始化了一个 marks 列表,并使用 for 循环通过 range(len(Marks_list)) 迭代其索引。在循环内部,当前索引和对应值被存储在变量中,并在每次迭代时打印出来。

示例 2

下面是另一个演示手动访问值的程序

程序

输出

Indices and values in the list:
[(0, 'Desk'), (1, 'Chair'), (2, 'Lamp'), (3, 'Bookshelf')]

说明

此示例定义了一个接受列表作为输入的函数。然后启动一个 for 循环来遍历列表。在每次迭代中,一个元组由索引和该索引处的对应元素组成。然后将该元组附加到结果列表中。循环完成后,该函数将打印最终的元组列表。

使用 map() 函数

map() 函数是 Python 的内置函数,它将指定的函数应用于可迭代对象中的所有项。然后,该函数返回一个可迭代的 map 对象,或者在 Python 3 中返回一个列表。

下面是一个演示如何访问 Python for 循环索引值的程序。

程序

输出

Indices and values in the list:
[(0, 'Laptop'), (1, 'Charger'), (2, 'CPU'), (3, 'Computer')]

说明

函数 `print_indices_and_values` 接受一个列表作为输入。它使用 lambda 函数和 `map` 函数生成一个元组列表,该列表包含输入列表中的索引及其对应的值。然后打印结果列表。

使用手动索引

“手动索引”是一种在代码中使用显式索引值来访问集合(如数组或列表)中特定元素的方法。在 Python 中,索引过程通常从第一个元素的 0 开始,第二个元素的 1 开始,依此类推。

示例

下面是一个演示如何手动访问索引值的程序。

程序

输出

Indices and values in the list:
index: 1 and fruit: APPLE 
index: 2 and fruit: MANGO 
index: 3 and fruit: BANANA 
index: 4 and fruit: ORANGE 

说明

在此示例程序中,我们定义了一个接受输入列表的函数。然后,我们创建变量“i”并将其赋值为 0。接下来,我们通过 for 循环进行迭代,并在每次迭代时增加“i”,以在每次迭代时创建索引值。然后,在每次迭代中,我们都打印了输入列表的索引和值。

使用 itertools.count

itertools.count() 创建一个无限迭代器,从 0 开始生成连续的整数。当您需要一个简单的自动计数器而无需显式定义范围或管理单独的计数器变量时,它特别有用。

示例

下面是一个演示 itertools.count 用于访问索引值的程序

程序

输出

Index 0: apple
Index 1: banana
Index 2: orange

说明

我们从 itertools 模块导入了 count 函数。然后,我们定义了一个名为“items”的列表,其中包含表示水果的字符串元素。count 函数创建一个无限迭代器,从 0 开始生成连续的整数。接下来,我们使用 Zip() 函数将无限计数器与 items 列表组合起来,该函数将“items”的每个元素与计数器中的相应值配对。最后,我们使用 for 循环迭代从 zip(count(), items) 获得的列表 (item) 中的索引 (i) 和项 (item) 的对,并打印列表中的每个索引和对应的项。

使用反向索引

反向索引,也称为负索引,是编程中的一种技术,您可以通过从末尾向后计数位置来访问序列(如列表或字符串)中的元素。

如果您想从末尾访问元素,这是简单的方法。

程序

输出

Index 2: orange
Index 1: banana
Index 0: apple

说明

我们创建了一个包含三个字符串元素的列表。然后,我们启动了一个 for 循环,以反向顺序迭代索引范围,并打印每个索引及其在 items 列表中的对应值。

结论

Python 提供了多种在 for 循环中访问索引的方法。最常见的方法是使用内置的 range 函数和 len 函数来迭代序列(如列表)的索引。另一种方法是使用 enumerate 函数,该函数在一个迭代中将索引和对应的元素结合起来。Python 提供了灵活性,可以根据任务的具体要求选择最合适的方法,从而在 for 循环的各种场景中轻松处理索引。