在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