python中迭代器的使用得到元素的索引

在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


posted @ 2017-08-28 10:39  any小鱼  阅读(6734)  评论(0编辑  收藏  举报