📌  相关文章
📜  在for循环中使用索引进行迭代python(1)

📅  最后修改于: 2023-12-03 14:51:16.072000             🧑  作者: Mango

在 for 循环中使用索引进行迭代 Python

在 Python 中,可以使用循环语句来迭代列表、元组、字典等数据结构。而对于列表和元组,我们也可以使用循环语句和下标来进行迭代,即在 for 循环中使用索引进行迭代。

1. 使用 range 函数

我们可以使用 range 函数来生成一个数字序列,然后在 for 循环中使用下标迭代列表或元组中的元素。

my_list = ['apple', 'banana', 'orange']

for i in range(len(my_list)):
    print(f"The {i+1}th fruit is {my_list[i]}")

输出为:

The 1th fruit is apple
The 2th fruit is banana
The 3th fruit is orange

在上面的例子中,我们使用了 range(len(my_list)) 来生成一个数字序列,该序列的长度与列表的长度相同。在循环中,i 是下标,my_list[i] 是该下标对应的元素。

2. 使用 enumerate 函数

另外一种更简便的方法是使用 enumerate 函数。该函数可以同时返回元素的下标和值,然后我们可以在 for 循环中使用元组解包来分别获取它们。

my_tuple = ('apple', 'banana', 'orange')

for i, fruit in enumerate(my_tuple):
    print(f"The {i+1}th fruit is {fruit}")

输出为:

The 1th fruit is apple
The 2th fruit is banana
The 3th fruit is orange

在上面的例子中,我们使用了 enumerate(my_tuple) 来同时获取元组中每个元素的下标和值。在循环中,i 是下标,fruit 是该下标对应的元素。

3. 注意事项

需要注意的是,在使用索引迭代列表或元组时,我们需要确保下标不越界,否则会抛出 IndexError 异常。

my_list = ['apple', 'banana', 'orange']

for i in range(len(my_list)+1):    # 将 range 函数的参数从 len(my_list) 改为 len(my_list)+1
    print(f"The {i+1}th fruit is {my_list[i]}")

输出为:

Traceback (most recent call last):
  File "/Users/zhiweidong/Desktop/test.py", line 4, in <module>
    print(f"The {i+1}th fruit is {my_list[i]}")
IndexError: list index out of range

在上面的例子中,我们将 range 函数的参数由 len(my_list) 改为 len(my_list)+1,导致循环尝试访问一个不存在的元素,抛出 IndexError 异常。

另外,在使用下标迭代列表或元组时,也要确保列表或元组中的元素的类型一致,否则就会出现类型错误。例如,在下面的例子中,我们试图迭代一个包含字符串和整数的列表:

my_list = ['apple', 123, 'orange']

for i in range(len(my_list)):
    print(f"The {i+1}th fruit is {my_list[i]}")

输出为:

Traceback (most recent call last):
  File "/Users/zhiweidong/Desktop/test.py", line 4, in <module>
    print(f"The {i+1}th fruit is {my_list[i]}")
TypeError: f-string: expecting 's' or 'r' or 'a', but got 'int'

在上面的例子中,我们试图在 f-string 中使用整数,导致出现类型错误。