欢迎访问宙启技术站
智能推送

Python中的 zip函数

发布时间:2023-06-10 00:27:47

Python中的zip函数是一个非常有用的工具,它提供了一种将两个或多个大小相等的序列进行配对和压缩的方法。zip函数接受任意数量的序列(它们的长度必须相等),并将它们压缩到一个元组的列表中。每个元组包含来自每个序列的相应元素。

zip函数的语法如下:

zip(*iterables)

其中,iterables是一个或多个序列,*表示可以接受任意数量的参数,实际上在zip函数内部会将传入的多个序列打包成一个元组的列表。

例如,我们有两个列表,分别为姓名和年龄:

names = ['Tom', 'Jerry', 'Mike', 'Rose']

ages = [18, 22, 30, 25]

我们可以将它们通过zip函数进行配对:

pairs = zip(names, ages)

pairs将会是一个由元组组成的列表,每个元组包含对应姓名和年龄。我们可以通过循环来访问每个元组:

for name, age in pairs:

    print(name, age)

输出结果如下:

Tom 18

Jerry 22

Mike 30

Rose 25

除了将两个序列配对之外,zip函数还可以用来将多个序列进行压缩。例如,如果我们有三个列表a、b、c,它们的长度相等,我们可以通过zip函数将它们组合成一个列表:

a = [1, 2, 3]

b = [4, 5, 6]

c = [7, 8, 9]

result = zip(a, b, c)

result将会是一个由元组组成的列表,每个元组包含来自a、b、c的相应元素。我们可以通过循环访问每个元组:

for x, y, z in result:

    print(x, y, z)

输出结果如下:

1 4 7

2 5 8

3 6 9

需要注意的是,zip函数生成的列表长度等于传入的序列中最短的列表的长度。如果我们传入的序列长度不等,zip函数将会忽略多余的元素。

除了zip函数,还有一个类似的函数叫做zip_longest。zip_longest函数与zip函数类似,不同之处是当传入的序列长度不相等时,zip_longest函数会填充缺失的元素。例如,如果我们将a、b、c、d这四个列表传入zip_longest函数,并指定缺失值为None,那么结果如下:

from itertools import zip_longest

a = [1, 2, 3]

b = [4, 5]

c = [7]

d = [9, 10, 11, 12]

result = zip_longest(a, b, c, d, fillvalue=None)

for x, y, z, w in result:

    print(x, y, z, w)

输出结果如下:

1 4 7 9

2 5 None 10

3 None None 11

None None None 12

zip函数在Python中非常常用,特别是在处理多个列表时。它提供了一种简单而方便的方法,使得我们可以将多个列表压缩和配对到一起。zip_longest函数则扩展了zip函数的功能,让它更加灵活。无论是zip函数还是zip_longest函数,都可以大大简化我们的代码,并提高代码的可读性和可维护性。