在 Python 中,zip() 是一個內建函數,用於將多個可迭代對象(如列表、元組)中的元素配對起來,生成一個「配對」的迭代器。這樣的迭代器中每個元素都是一個元組,包含來自原始序列的對應元素。zip() 可以大大簡化多個序列間的同步操作,比如並行遍歷。
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 78]
# 使用 zip 將兩個列表配對
paired = zip(names, scores)
print(list(paired))
# Output: [('Alice', 85), ('Bob', 90), ('Charlie', 78)]
names = ["Alice", "Bob"]
scores = [85, 90, 78]
paired = zip(names, scores)
print(list(paired))
# Output: [('Alice', 85), ('Bob', 90)]
2.拆分已配對的列表:可以使用 * 操作符來解壓 zip 的結果,分別取得各個列表。
paired = [('Alice', 85), ('Bob', 90), ('Charlie', 78)]
names, scores = zip(*paired)
print(names) # Output: ('Alice', 'Bob', 'Charlie')
print(scores) # Output: (85, 90, 78)
1.同步遍歷多個序列:當需要同時遍歷多個列表或元組時,使用 zip() 可以更加簡潔。
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 78]
for name, score in zip(names, scores):
print(f"{name} scored {score}")
# Output:
# Alice scored 85
# Bob scored 90
# Charlie scored 78
2.創建字典:可以使用 zip() 將兩個列表轉換為字典。
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 78]
scores_dict = dict(zip(names, scores))
print(scores_dict)
# Output: {'Alice': 85, 'Bob': 90, 'Charlie': 78}
在 Python 中,如果使用 zip() 合併的多個可迭代對象長度不一樣,zip() 會自動根據最短的可迭代對象進行合併。也就是說,當其中最短的可迭代對象被耗盡時,zip() 就會停止生成配對
list1 = [1, 2, 3, 4]
list2 = ['a', 'b', 'c']
# 使用 zip() 合併長度不一樣的列表
zipped = list(zip(list1, list2))
print(zipped)
#[(1, 'a'), (2, 'b'), (3, 'c')]
在這個例子中,list2 只有 3 個元素,因此 zip() 只會生成前三個配對,當其中一個列表到達末尾時,zip() 就停止了。