python中雙向索引,python 通過索引迭代列表_Python的索引迭代

 2023-10-24 阅读 27 评论 0

摘要:Python中,迭代永遠是取出元素本身,而非元素的索引。對于有序集合,元素確實是有索引的。有的時候,我們確實想在 for 循環中拿到索引,怎么辦?方法是使用?enumerate() 函數:>>> L = ['Adam', 'Lisa&#

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

對于有序集合,元素確實是有索引的。有的時候,我們確實想在 for 循環中拿到索引,怎么辦?

方法是使用?enumerate() 函數:

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']

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

... print index, '-', name

...

0 - Adam

1 - Lisa

2 - Bart

3 - Paul

使用 enumerate() 函數,我們可以在for循環中同時綁定索引index和元素name。但是,這不是 enumerate() 的特殊語法。實際上,enumerate() 函數把:

['Adam', 'Lisa', 'Bart', 'Paul']

變成了類似:

[(0, 'Adam'), (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,再迭代,就同時獲得了索引和元素本身。

zip()函數可以把兩個 list 變成一個 list:

>>>?zip([10,?20,?30],?['A',?'B',?'C'])

[(10,?'A'),?(20,?'B'),?(30,?'C')]

此函數注意一個問題,他直接轉成turple的形式,不需要使用?enumerate()函數

(轉載http://www.imooc.com/learn/177)

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/163761.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息