這篇文章主要介紹python如何同時遍歷數組的索引和值,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

你想在迭代一個序列的同時跟蹤正在被處理的元素索引。
獲取索引
內置的 enumerate() 函數可以很好的解決這個問題:
>>> my_list = ['a', 'b', 'c'] >>> for idx, val in enumerate(my_list): ... print(idx, val) ... 0 a 1 b 2 c
行號從1開始
為了按傳統(tǒng)行號輸出(行號從1開始),你可以傳遞一個開始參數:
>>> my_list = ['a', 'b', 'c'] >>> for idx, val in enumerate(my_list, 1): ... print(idx, val) ... 1 a 2 b 3 c
行號定位
這種情況在你遍歷文件時想在錯誤消息中使用行號定位時候非常有用:
def parse_data(filename):
with open(filename, 'rt') as f:
for lineno, line in enumerate(f, 1):
fields = line.split()
try:
count = int(fields[1])
...
except ValueError as e:
print('Line {}: Parse error: {}'.format(lineno, e))enumerate() 對于跟蹤某些值在列表中出現的位置是很有用的。 所以,如果你想將一個文件中出現的單詞映射到它出現的行號上去,可以很容易的利用 enumerate() 來完成:
word_summary = defaultdict(list)
with open('myfile.txt', 'r') as f:
lines = f.readlines()
for idx, line in enumerate(lines):
# Create a list of words in current line
words = [w.strip().lower() for w in line.split()]
for word in words:
word_summary[word].append(idx)如果你處理完文件后打印 word_summary ,會發(fā)現它是一個字典(準確來講是一個 defaultdict ), 對于每個單詞有一個 key ,每個 key 對應的值是一個由這個單詞出現的行號組成的列表。 如果某個單詞在一行中出現過兩次,那么這個行號也會出現兩次, 同時也可以作為文本的一個簡單統(tǒng)計。
計數變量
當你想額外定義一個計數變量的時候,使用 enumerate() 函數會更加簡單。你可能會像下面這樣寫代碼:
lineno = 1 for line in f: # Process line ... lineno += 1
但是如果使用 enumerate() 函數來代替就顯得更加優(yōu)雅了:
for lineno, line in enumerate(f): # Process line ...
enumerate() 函數返回的是一個 enumerate 對象實例, 它是一個迭代器,返回連續(xù)的包含一個計數和一個值的元組, 元組中的值通過在傳入序列上調用 next() 返回。
陷阱
還有一點可能并不很重要,但是也值得注意, 有時候當你在一個已經解壓后的元組序列上使用 enumerate() 函數時很容易調入陷阱。 你得像下面正確的方式這樣寫:
data = [ (1, 2), (3, 4), (5, 6), (7, 8) ] # Correct! for n, (x, y) in enumerate(data): ... # Error! for n, x, y in enumerate(data): ...
以上是“python如何同時遍歷數組的索引和值”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!
分享標題:python如何同時遍歷數組的索引和值-創(chuàng)新互聯
本文網址:http://chinadenli.net/article0/cohpio.html
成都網站建設公司_創(chuàng)新互聯,為您提供靜態(tài)網站、定制開發(fā)、面包屑導航、做網站、營銷型網站建設、服務器托管
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯