4.10 序列上索引值迭代
问题
想在迭代一个序列的同时跟踪正在被处理的元素索引。
解决方案
内置的 enumerate()
函数可以很好的解决这个问题:
>>> my_list = ['a', 'b', 'c']
>>> for idx, val in enumerate(my_list):
... print(idx, val)
...
0 a
为了按传统行号输出(行号从1开始),你可以传递一个开始参数:
>>> for idx, val in enumerate(my_list, 1)
enumerate()
对于跟踪某些值在列表中出现的位置是很有用的。
讨论
, 有时候当你在一个已经解压后的元组序列上使用 enumerate()
函数时很容易调入陷阱。 你得像下面正确的方式这样写:
data = [ (1, 2), (3, 4), (5, 6), (7, 8) ]
# Correct!
for n, (x, y) in enumerate(data):
...
# Error!
for n, x, y in enumerate(data):
...
Last updated
Was this helpful?