Python 中 zip() 的用法
Python 内置函数 zip() 的作用是什么?如何用它实现字典的键值互换?如何处理不等长序列?
回答
Yahuda
zip() 将多个可迭代对象对应位置打包为元组。
# 基础用法
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 92, 78]
list(zip(names, scores))
# [('Alice', 85), ('Bob', 92), ('Charlie', 78)]
# 创建字典
dict(zip(names, scores))
# {'Alice': 85, 'Bob': 92, 'Charlie': 78}
# 解包(zip 的逆运算)
pairs = [('A', 1), ('B', 2), ('C', 3)]
letters, numbers = zip(*pairs)
# letters: ('A', 'B', 'C'), numbers: (1, 2, 3)
# 不等长:zip 按最短的截断
zip([1, 2, 3, 4], ['a', 'b']) # [(1, 'a'), (2, 'b')]
# zip_longest 按最长的填充
from itertools import zip_longest
list(zip_longest([1, 2, 3], ['a', 'b'], fillvalue=0))
# [(1, 'a'), (2, 'b'), (3, 0)]