Python實現迭代時使用索引的方法示例

2022-10-04 19:33:16 字數 1443 閱讀 2086

索引迭代

python中,迭代永遠是取出元素本身,而非元素的索引。

對於有序集合,元素確實是有索引的。有的時候,我們確實想在 for 迴圈中拿到索引,怎麼辦?

方法是使用enumerate()函式:

>>> l = ['adam', 'lisa', 'bart', 'paul']

>>> for index, name in enumerate(l):

... print index, '-', name

...0 - adam

1 - lisa

2 - www.cppcns.combart

3 - paul

使用enumerate()函式,我們可以在for迴圈中同時繫結索引index和元素name。但是,這不是enumerate()的特殊語法。實際上,enumerate()函式把:

['adam', 'lisa', 'bart', 'paul']

變成了類似:

[(0, 'awww.cppcns.comdam'), (1, 'lisa'), (2, 'bart'), (3, 'paul')]

因此,迭代的每乙個元素實際上是乙個tuple:

for t in enumerate(l):

index = t[0]

name = t[1]

print index, '-', name

如果我們知道每個tuple元素都包含兩個元素,for迴圈又可以進一步簡寫為:

for index, name in enumerate(l):

print index, '-', name

這樣不但**更簡單,而且還少了兩條賦值語句。

可見,索引迭代也不是真的按索引訪問,而是由enumerate()函式自動把每個元素變成 (index, element) 這樣的tuple,再迭代,就同時獲得了索引和元素本身。

同時www.cppcns.com,也可以採用zip的方法給迭代物件加上索引

zip()函式可以把兩個 list 變成乙個 list:

>>> zip([10, 20, 30], ['a', 'b', 'c'])

[(10, 'a'), (20, 'b'), (30, 'c')]

在迭代 ['adam', 'lisa', 'bart', 'paul'] 時,如果我們想列印出名次 - 名字(名次從1開始),請考慮如何在迭代中列印出來。

提示:考慮使用zip()函式和range()函式

**如下:

l = ['adam', 'lisa', 'bart', 'paul']

for index, name in zip(range(1, 5), l):

print index, '-', name

輸出結果為:

1 - adam

2 - lisa

3 - bart

4 - paul

索引成功加上

Python 索引迭代

1 使用enumerate函式 l adam lisa bart paul for index name inenumerate l print index 1 name lower 2 使用zip函式 for index name inzip range 1 len l 1 l print ind...

python迭代器使用 Python迭代器的用法

我們在前面使用過語句 for x in列表物件 這就表示列表物件是可迭代的 iterable 那麼如何判斷某個物件是否可迭代呢?答案是可以使用collections.iterable類來判斷。如下面的 所示,列表是可迭代的,整數是不可迭代的,字串是可迭代的。from collections impo...

Python學習(三) 迴圈 索引 迭代

好久沒有學習了 例1.迴圈遍歷 for letter in python 第乙個例項 print 當前字母 letter for fruit in fruits 第二個例項 print 當前水果 fruit print good bye 輸出結果如下 例2.序列索引迭代 len 和range len...