Python 中的 zip() 和 enumerate()

最近要用 Python 做一些小專案,記錄一些學習心得。以及這個部落格再不更新技術文章,就變成文學部落格了,顯然和初衷相違背()

zip()

zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的物件。

1
2
3
4
5
6
7
8
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = [4, 5, 6]
>>> zipped = zip(a, b, c)
>>> zipped
<zip object at 0x00000278786975C0>
>>> list(zipped)
[(1, 4, 4), (2, 5, 5), (3, 6, 6)]

這樣做的一種應用方式是在遍歷的時候,可以同時遍歷多個陣列:

1
2
3
4
5
6
>>> for i, j, k in zip(a, b, c):
... print(i, j, k)
...
1 4 4
2 5 5
3 6 6

如果遇到陣列不等長,會以最短的長度為準。

如果要按照最長的長度,可以使用另一個函式 zip_longest(),不多贅述。

enumerate()

enumerate() 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和索引。

1
2
3
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

這也可以在遍歷的時候使用。

注意事項

這兩個函式使用的時候,需要匯入模組 itertools,否則會報錯。