在Python中,迭代永远是取出元素本身,而不能取到元素的索引。如果想获取元素的索引,
1:可以使用enumerate() 函数
例如:names = ['aa', 'bb', 'cc', 'dd']
for index, name in enumerate(names):
print index, '-', name
得到结果:
0 - aa
1 - bb
2 - cc
3 - dd
使用 enumerate() 函数,我们可以在for循环中同时绑定索引index和元素name。
使用enumerate() 函数其实是把:
['aa', 'bb', 'cc', 'dd']
变成了tuple
类似: [(0, 'aa'), (1, 'bb'), (2, 'cc'), (3, 'dd')] 因此,迭代的每一个元素实际上是一个tuple:
索引迭代也不是真的按索引访问,而是由 enumerate() 函数自动把每个元素变成 (index, element) 这样的tuple,再迭代,就同时获得了索引和元素本身。
2:使用zip函数
zip()函数可以把两个 list 变成一个 list:
>>> zip([10, 20, 30], ['A', 'B', 'C'])
[(10, 'A'), (20, 'B'), (30, 'C')]
在迭代 ['aa', 'bb', 'cc', 'dd'] 时,如果我们想打印出名次 - 名字(名次从1开始),请考虑如何在迭代中打印出来。
提示:考虑使用zip()函数和range()函数
L = ['aa', 'bb', 'cc', 'dd']
ans = zip([1,2,3,4],L)
for index, name in ans:
print index, '-', name
得到结果:
0 - aa
1 - bb
2 - cc
3 - dd