在 Python 中,zip() 是一個非常常見的內建函式,用來將多個可疊代對象(如列表、元組)中的元素按順序配對成元組。它可以有效地合併多個可疊代對象,讓你更方便地處理對應元素。
zip() 的基本用法
zip() 函式接受一個或多個可疊代對象(如列表、元組、字典等),並返回一個迭代器,這個迭代器會生成元組,元組的每個元素來自對應的可疊代對象。當其中一個可疊代對象被耗盡時,zip() 會停止。
語法
zip(iterable1, iterable2, ...)
- iterable1, iterable2, ...:多個可疊代對象(如列表、元組、字典等)。
範例 1:基本用法
# 兩個列表
a = [1, 2, 3]
b = ['a', 'b', 'c']
result = zip(a, b)
print(list(result)) # 輸出: [(1, 'a'), (2, 'b'), (3, 'c')]
這裡,zip(a, b) 將列表 a 和 b 中的元素一一配對,結果是一個包含元組的可疊代對象。
範例 2:不同長度的可疊代對象
a = [1, 2, 3]
b = ['a', 'b']
result = zip(a, b)
print(list(result)) # 輸出: [(1, 'a'), (2, 'b')]
如果輸入的可疊代對象長度不同,zip() 會根據最短的那個可疊代對象來配對,長度較長的元素會被丟棄。
範例 3:解壓 zip() 的結果
你可以使用 zip() 的反向操作,這就是所謂的「解壓」操作。這可以通過 * 操作符來實現。
a = [1, 2, 3]
b = ['a', 'b', 'c']
zipped = zip(a, b)
# 使用 * 反向解壓
unzipped = zip(*zipped)
print(list(unzipped)) # 輸出: [(1, 2, 3), ('a', 'b', 'c')]
範例 4:zip() 和 dict() 配合使用
你也可以利用 zip() 來創建字典。
keys = ['name', 'age', 'location']
values = ['Alice', 25, 'Taiwan']
result = dict(zip(keys, values))
print(result) # 輸出: {'name': 'Alice', 'age': 25, 'location': 'Taiwan'}
這裡,zip(keys, values) 將 keys 和 values 中的元素配對,再通過 dict() 來創建字典。
範例 5:使用 zip() 處理多個列表
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = [True, False, True]
result = zip(a, b, c)
print(list(result)) # 輸出: [(1, 'a', True), (2, 'b', False), (3, 'c', True)]
當有多個可疊代對象時,zip() 會根據每個位置上的元素進行配對。
總結
zip()是一個用來將多個可疊代對象按順序配對的函式,返回一個元組的迭代器。- 它在處理數據時非常方便,特別是當你有多個列表或其他可疊代對象,並且希望將它們對應起來時。
zip()也可以和dict()、list()等函式結合使用,來創建字典或更方便地處理數據。
有沒有某些情境,你覺得可以用 zip() 更有效率地處理資料呢?
沒有留言:
張貼留言