Python中的zip函数:将两个列表按对应位置打包成元组
Python中的zip函数是一个非常强大的函数,可以将两个或多个列表按照对应位置打包成元组形式返回。zip函数的语法为:
zip([iterable, ...])
其中 iterable 可以是一个或多个列表、元组、字符串或任何可迭代的对象。zip 函数返回一个迭代器,该迭代器生成由每个输入的可迭代对象相应位置的元素组成的元组。最终结果的长度将与输入的最短可迭代长度相同。
下面是一个简单的示例,演示如何使用zip函数将两个列表打包:
list1 = ['a', 'b', 'c', 'd'] list2 = [1, 2, 3, 4] zip_list = zip(list1, list2) print(list(zip_list))
输出结果为:
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
在这个例子中,我们将列表list1和list2传递给zip函数,得到一个zip对象。通过使用list函数,我们将zip对象转换为列表。
当使用zip函数时,如果输入的可迭代长度不一致,则zip函数将截断较长的可迭代对象以使长度一致。比如,如果一个列表包含5个元素,而另一个列表包含3个元素,则最终结果将包含3个元组。
下面是一个演示如何处理可迭代长度不一致的示例:
list1 = ['a', 'b', 'c', 'd', 'e'] list2 = [1, 2, 3] zip_list = zip(list1, list2) print(list(zip_list))
输出结果为:
[('a', 1), ('b', 2), ('c', 3)]
在处理可迭代长度不一致的时候,如果希望将较短的可迭代对象填充到相同长度,那么可以使用itertools模块中的zip_longest函数。该函数的语法如下:
itertools.zip_longest([iterable, ...], fillvalue=None)
其中 iterable 可以是一个或多个列表、元组、字符串或任何可迭代的对象,fillvalue 参数是填充值,它默认为 None。zip_longest 函数与 zip 函数类似,不同之处在于,zip_longest 函数能将较短的可迭代对象填充到相同长度。
下面是一个演示如何使用zip_longest函数的示例:
from itertools import zip_longest list1 = ['a', 'b', 'c', 'd', 'e'] list2 = [1, 2, 3] zip_list = zip_longest(list1, list2, fillvalue='**') print(list(zip_list))
输出结果为:
[('a', 1), ('b', 2), ('c', 3), ('d', '**'), ('e', '**')]
在这个示例中,zip_longest函数使用fillvalue参数填充了长度不足的可迭代对象,最终将两个列表打包成了相同长度的元组。
总结一下,zip函数是Python中一个非常有用的函数,它能够将两个或多个可迭代对象按对应位置打包成元组。如果输入的可迭代对象长度不一致,zip函数将截断长度较长的可迭代对象。如果希望将长度不足的可迭代对象填充到相同长度,则可以使用itertools模块中的zip_longest函数。
