Zip 和 Enumerate
阿新 • • 發佈:2018-12-19
zip
和 enumerate
是實用的內建函式,可以在處理迴圈時用到。
Zip
zip
返回一個將多個可迭代物件組合成一個元組序列的迭代器。每個元組都包含所有可迭代物件中該位置的元素。例如,
list(zip(['a', 'b', 'c'], [1, 2, 3]))
將輸出 [('a', 1), ('b', 2), ('c', 3)]
.
正如 range()
一樣,我們需要將其轉換為列表或使用迴圈進行遍歷以檢視其中的元素。
你可以如下所示地用 for
迴圈拆封每個元組。
letters = ['a', 'b', 'c'] nums = [1, 2, 3] for letter, num in zip(letters, nums): print("{}: {}".format(letter, num))
除了可以將兩個列表組合到一起之外,還可以使用星號拆封列表。
some_list = [('a', 1), ('b', 2), ('c', 3)]
letters, nums = zip(*some_list)
這樣可以建立正如之前看到的相同 letters
和 nums
列表。
Enumerate
enumerate
是一個會返回元組迭代器的內建函式,這些元組包含列表的索引和值。當你需要在迴圈中獲取可迭代物件的每個元素及其索引時,將經常用到該函式。
letters = ['a', 'b', 'c', 'd', 'e'] for i, letter in enumerate(letters): print(i, letter)
這段程式碼將輸出:
0 a
1 b
2 c
3 d
4 e