中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何同時遍歷數組的索引和值

發布時間:2021-07-23 14:15:15 來源:億速云 閱讀:177 作者:小新 欄目:開發技術

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

你想在迭代一個序列的同時跟蹤正在被處理的元素索引。

獲取索引

內置的 enumerate() 函數可以很好的解決這個問題:

>>> my_list = ['a', 'b', 'c']
>>> for idx, val in enumerate(my_list):
...  print(idx, val)
...
0 a
1 b
2 c

行號從1開始

為了按傳統行號輸出(行號從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 ,會發現它是一個字典(準確來講是一個 defaultdict ), 對于每個單詞有一個 key ,每個 key 對應的值是一個由這個單詞出現的行號組成的列表。 如果某個單詞在一行中出現過兩次,那么這個行號也會出現兩次, 同時也可以作為文本的一個簡單統計。

計數變量

當你想額外定義一個計數變量的時候,使用 enumerate() 函數會更加簡單。你可能會像下面這樣寫代碼:

lineno = 1
for line in f:
 # Process line
 ...
 lineno += 1

但是如果使用 enumerate() 函數來代替就顯得更加優雅了:

for lineno, line in enumerate(f):
 # Process line
 ...

enumerate() 函數返回的是一個 enumerate 對象實例, 它是一個迭代器,返回連續的包含一個計數和一個值的元組, 元組中的值通過在傳入序列上調用 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如何同時遍歷數組的索引和值”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玛曲县| 东明县| 黑河市| 七台河市| 莒南县| 四川省| 绥德县| 定远县| 南和县| 呼图壁县| 吴堡县| 沁源县| 漾濞| 祁东县| 华容县| 海淀区| 大冶市| 崇州市| 三亚市| 乐安县| 夏邑县| 饶平县| 新营市| 运城市| 文水县| 工布江达县| 商洛市| 拉萨市| 拉孜县| 黄石市| 桦甸市| 疏附县| 宜宾市| 漠河县| 祁连县| 宜良县| 潍坊市| 太保市| 湛江市| 肃北| 盘锦市|