Python 内建函数列表 > Python 的内置函数 zip
Python 的内置函数 zip() 是一个非常有用的工具函数,用于将多个可迭代对象(如列表、元组等)中的元素按顺序打包成一个个元组,然后返回由这些元组组成的迭代器。其基本语法为:
1 | zip(*iterables) |
其中,iterables 可以是多个可迭代对象,比如列表、元组、字符串等。zip() 函数会将这些可迭代对象中相同索引位置的元素组合成一个元组,最终返回一个迭代器。
主要特点
- 并行迭代:
zip()可以同时遍历多个可迭代对象,非常适合在需要同时处理多个序列数据时使用。 - 惰性计算:
zip()返回的是一个迭代器,而不是列表,只有在需要时才会生成数据,这在处理大数据集时能节省内存。 - 长度匹配:当输入的可迭代对象长度不一致时,
zip()会以最短的可迭代对象为准,忽略多余的元素。
示例
假设有两个列表:
1 | names = ['Alice', 'Bob', 'Charlie'] |
使用 zip() 将它们组合:
1 | zipped = zip(names, ages) |
解压
可以使用 zip(*zipped) 来解压数据:
1 | names_unzipped, ages_unzipped = zip(*zipped) |
应用场景
- 数据配对:将多个列表中的数据一一对应组合。
- 并行处理:在循环中同时处理多个序列数据。
- 字典构造:结合
dict()快速构造字典:1
2person_dict = dict(zip(names, ages))
print(person_dict) # 输出:{'Alice': 25, 'Bob': 30, 'Charlie': 35}
注意事项
- 在 Python 2 中,
zip()直接返回一个列表,而在 Python 3 中返回的是迭代器。如果需要列表,需显式转换为list()。 - 如果输入的可迭代对象长度不同,
zip()会以最短的为准,忽略多余的元素。如果需要以最长的为准,可以使用itertools.zip_longest()。
《Python 的内置函数 zip》 是转载文章,点击查看原文。