当在一个列表或者序列上遍历时,许多小伙伴使用range()函数和len()搭配生成从0到序列长度-1的索引整数。在这些for 循环中通常使用变量i(index)。例如:
>>> lst = ["cat', 'dog', 'moose']
>>> for i in range(len(lst)):
>>> print(i, lst[i])
0 cat
1 dog
2 moose
range(len()) 的传统写法比较直接,也通俗易懂,但是不够Python,且不够简约。更好的做法是将列表或者序列传递给内置函数 enumerate(),它将返回索引的整数和当前索引对应的项。比如:
>>> lst = ["cat', 'dog', 'moose']
>>> for i, data in enumerate(lst):
>>> print(i, data)
0 cat
1 dog
2 moose
使用enumerate() 替代 range(len()) 可以让代码更简约、整洁一些。如果只需要列表中的项而不需要索引,可以直接使用Python的迭代方式进行读取。例如:
>>> lst = ["cat', 'dog', 'moose']
>>> for data in lst:
>>> print(data)
cat
dog
moose
调用 enumerate() 并直接在一个序列上进行迭代 要比使用传统的 range(len()) 更Python。