Python中zip
在Python中,zip
是一个内建函数,它用于将两个或多个迭代器(比如列表、元组、字符串等)作为参数,返回一个zip
对象。这个zip
对象是一个迭代器,它在内部将输入的迭代器的元素组合成一个个元组(tuple),每个元组包含来自每个输入迭代器的一对元素。
下面是zip
函数的一些关键点:
zip
函数返回的zip
对象是一个可迭代的对象,它按照最短的输入迭代器的长度进行迭代。这意味着如果输入的迭代器长度不同,zip
会在最短的迭代器用完时停止。- 如果没有提供任何迭代器,
zip
将返回一个空的迭代器。 zip
通常用于并行迭代多个序列。- 在Python 3中,
zip
返回的是一个zip
对象,而在Python 2中,它返回的是一个列表。
下面通过一些例子来详细解释zip
的使用:
示例1:基础使用
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
zipped = zip(names, ages)
# 将zip对象转换为列表
print(list(zipped))
输出:
[('Alice', 25), ('Bob', 30), ('Charlie', 35)]
在这个例子中,zip
函数将names
和ages
两个列表组合在一起,创建了一个新的迭代器,其中每个元组包含一个名字和相应的年龄。
示例2:不同长度的迭代器
names = ['Alice', 'Bob', 'Charlie', 'David']
ages = [25, 30, 35]
zipped = zip(names, ages)
print(list(zipped))
输出:
[('Alice', 25), ('Bob', 30), ('Charlie', 35)]
在这个例子中,names
列表比ages
列表长,但zip
函数只组合到最短的迭代器ages
结束。
示例3:解压zip对象
pairs = [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
names, ages = zip(*pairs)
print(names)
print(ages)
输出:
('Alice', 'Bob', 'Charlie')
(25, 30, 35)
在这个例子中,我们使用*
操作符来解压pairs
列表,将其作为参数传递给zip
函数,从而重新获得了原始的names
和ages
列表。
总之,zip
是一个非常强大的工具,它允许你轻松地将多个迭代器组合在一起,或者将它们分解开来。