Python 如何在 for 循环 中遍历数组索引(index)

python enumerate 数组索引

问题: 类似下面的Python For 循环,

xs = [8, 23, 45]

for x in xs:
    print("item #{} = {}".format(index, x))Code language: PHP (php)

如何输出:

item #1 = 8
item #2 = 23
item #3 = 45Code language: PHP (php)

用enumerate在遍历时获取元素的索引:

for index, item in enumerate(items):
    print(index, item)Code language: PHP (php)

请注意,Python 的索引从零开始,因此输出为 0 到 4

Python 的enumerate函数通过隐藏对索引的说明,并将可遍历对象封装到另一个可遍历对象(enumerate对象)中,从而使代码更易懂:

for index, item in enumerate(items, start=0):   # default is zero
    print(index, item)Code language: PHP (php)

详解

为了分解这些示例,假设我们有一个要使用索引遍历的列表:

items = ['a', 'b', 'c', 'd', 'e']Code language: JavaScript (javascript)

现在我们将这个遍历传递给enumerate,创建一个enumerate对象:

enumerate_object = enumerate(items) # the enumerate objectCode language: PHP (php)

然后从这个遍历中拉出第一项,使用next函数进入循环:

iteration = next(enumerate_object) # first iteration from enumerate

print(iteration)Code language: PHP (php)

我们看到我们得到了一个元组,索引为0, 元素为’a’

(0, 'a')Code language: JavaScript (javascript)

我们可以使用所谓的“序列解包(sequence unpacking)”来从这个二元组中提取元素:

index, item = iteration
#   0,  'a' = (0, 'a') # essentially this.Code language: PHP (php)

当检查index时,我们发现它指的是第一个索引0,并且item指的是第一个元素’a’。

>>> print(index)
0
>>> print(item)
aCode language: PHP (php)

结论

  • Python 索引从零开始
  • 要在遍历时从可遍历对象中获取这些索引,请使用 enumerate 函数
  • 以惯用的方式使用 enumerate(以及元组解包)创建的代码更具可读性和可维护性:
    所以这样做:
for index, item in enumerate(items, start=0):   # Python indexes start at zero
    print(index, item)Code language: PHP (php)

发表评论