在python,索引迭代
提問(wèn)人:楊紫紅發(fā)布時(shí)間:2020-11-26
Python中,迭代永遠(yuǎn)是取出元素本身,而非元素的索引。
對(duì)于有序集合,元素確實(shí)是有索引的。有的時(shí)候,我們確實(shí)想在 for 循環(huán)中拿到索引,
怎么辦?
方法是使用 enumerate() 函數(shù):
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
... print index, '-', name
...
0 - Adam
1 - Lisa
2 - Bart
3 - Paul
使用 enumerate() 函數(shù),我們可以在for循環(huán)中同時(shí)綁定索引index和元素name。但是,
這不是 enumerate() 的特殊語(yǔ)法。實(shí)際上,enumerate() 函數(shù)把:
['Adam', 'Lisa', 'Bart', 'Paul']
變成了類(lèi)似:
[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
因此,迭代的每一個(gè)元素實(shí)際上是一個(gè)tuple:
for t in enumerate(L):
index = t[0]
name = t[1]
print index, '-', name
如果我們知道每個(gè)tuple元素都包含兩個(gè)元素,for循環(huán)又可以進(jìn)一步簡(jiǎn)寫(xiě)為:
for index, name in enumerate(L):
print index, '-', name
這樣不但代碼更簡(jiǎn)單,而且還少了兩條賦值語(yǔ)句。
可見(jiàn),索引迭代也不是真的按索引訪問(wèn),而是由 enumerate() 函數(shù)自動(dòng)把每個(gè)元素變
成 (index, element) 這樣的tuple,再迭代,就同時(shí)獲得了索引和元素本身。
對(duì)于有序集合,元素確實(shí)是有索引的。有的時(shí)候,我們確實(shí)想在 for 循環(huán)中拿到索引,
怎么辦?
方法是使用 enumerate() 函數(shù):
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
... print index, '-', name
...
0 - Adam
1 - Lisa
2 - Bart
3 - Paul
使用 enumerate() 函數(shù),我們可以在for循環(huán)中同時(shí)綁定索引index和元素name。但是,
這不是 enumerate() 的特殊語(yǔ)法。實(shí)際上,enumerate() 函數(shù)把:
['Adam', 'Lisa', 'Bart', 'Paul']
變成了類(lèi)似:
[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
因此,迭代的每一個(gè)元素實(shí)際上是一個(gè)tuple:
for t in enumerate(L):
index = t[0]
name = t[1]
print index, '-', name
如果我們知道每個(gè)tuple元素都包含兩個(gè)元素,for循環(huán)又可以進(jìn)一步簡(jiǎn)寫(xiě)為:
for index, name in enumerate(L):
print index, '-', name
這樣不但代碼更簡(jiǎn)單,而且還少了兩條賦值語(yǔ)句。
可見(jiàn),索引迭代也不是真的按索引訪問(wèn),而是由 enumerate() 函數(shù)自動(dòng)把每個(gè)元素變
成 (index, element) 這樣的tuple,再迭代,就同時(shí)獲得了索引和元素本身。
繼續(xù)查找其他問(wèn)題的答案?
相關(guān)視頻回答
點(diǎn)擊加載更多評(píng)論>>