一文掌握Python中zip()函数
理解zip()
zip()函数接受两个或多个可迭代对象作为参数,并返回一个迭代器,该迭代器聚合每个可迭代对象中的元素。可以把它想象成一个拉链,把不同列表中的元素组合成一个可迭代的元组。当处理相关数据但存储在不同序列中时,此功能非常方便。
语法和用法
zip() 的基本语法如下:
zip(iterable1, iterable2, ...)
一个实际的例子:将姓名与年龄x
考虑这样一个场景:有两个列表:一个包含姓名,另一个包含年龄。希望打印每个姓名及其相应的年龄。
以下是如何使用 zip() 实现这一点:
# Lists of names and ages
names = ['Alice', 'Bob', 'Charlie']
ages = [24, 30, 35]
# Using zip() to iterate over both lists in parallel
for name, age in zip(names, ages):
print(f"{name} is {age} years old.")
输出量:
Alice is 24 years old.
Bob is 30 years old.
Charlie is 35 years old.
这个代码片段演示了 zip() 将 names 列表中的每个元素与 ages 列表中的相应元素配对的能力,从而允许以一种干净简洁的方式处理相关数据。
使用zip()的好处
- 简单性: zip() 简化了并行迭代所需的代码,使代码更具可读性和Python风格。
- 通用性:它可以用于任何类型的可迭代对象,包括列表、元组、字典和集合。
- 效率: zip() 返回一个迭代器,这意味着它会根据需要生成成对的元素,从而提高程序的内存效率。
高级用法
- 处理不同类的可迭代项
默认情况下, zip() 在最短可迭代对象耗尽时停止。但是,如果需要继续迭代直到最长的可迭代对象耗尽,可以使用 itertools.zip_longest() ,使用指定的填充值填充缺失值。
- 解压缩值
也可以使用 zip() 和 * 操作符来将一个元组列表解压缩回单独的列表:
paired_list = list(zip(names, ages))
unzipped_names, unzipped_ages = zip(*paired_list)