iT邦幫忙

1

Python 內建函數 zip() & [list] 運用

  • 分享至 

  • xImage
  •  

在 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)]

zip() 的特性

  1. 短板效應:如果提供的可迭代對象長度不相同,zip() 會以最短的可迭代對象為準,忽略較長可迭代對象多出來的元素。
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)

zip() 的應用場景

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() 就停止了。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言