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

Python如何使用zip函数将多个列表合并为一个列表

发布时间:2023-06-09 13:25:58

Python中提供了一种非常方便的函数,可以将多个列表合并为一个列表,这个函数就是zip()函数。

zip()函数可以将多个可迭代对象(如列表、元组、字符串等)中对应的元素打包成一个个元组,然后返回一个由这些元组组成的列表。

例如,假设我们有三个列表:a = [1,2,3],b = [4,5,6],c = [7,8,9],我们可以使用zip函数将它们合并为一个列表:

d = list(zip(a,b,c))
print(d)  # 输出 [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

在这个例子中,zip()函数将a、b、c三个列表中的第一个元素依次取出,组成一个元组(1,4,7),然后将这个元组添加到一个新的列表中。然后继续取出第二个元素,组成新的元组(2,5,8),并添加到列表中。最后取出第三个元素,组成元组(3,6,9)并添加到列表中。

需要注意的是,如果要在Python 2.x版本中使用zip()函数合并多个列表,需要在zip()函数前加上‘*’符号,如下所示:

d = zip(*[a,b,c])
print(list(d))  # 输出 [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

除了合并列表外,zip()函数还可以用于多个列表的转置操作。例如,假设我们有一个二维列表:

lst = [[1,2,3],[4,5,6],[7,8,9]]

我们可以使用zip()函数进行转置操作,将其变为:

lst_t = list(zip(*lst))
print(lst_t)  # 输出 [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

在这个例子中,*lst会将二维列表中的三个子列表分别传入zip()函数中,而zip()函数会将三个子列表中的第一个元素依次取出,组成一个元组(1,4,7),接着取出第二个元素,组成元组(2,5,8),最后取出第三个元素并组成元组(3,6,9)。然后将这些元组组成一个新的列表并返回。

在实际的编程应用中,zip()函数还有很多其他的用途,例如:

1. 将多个字典中相应的键值对合并为一个元组,并添加到一个新的列表中。

d1 = {'a':1,'b':2,'c':3}
d2 = {'a':4,'b':5,'c':6}
d3 = {'a':7,'b':8,'c':9}
lst = [(k,v1,v2,v3) for k,v1,v2,v3 in zip(d1.keys(),d1.values(),d2.values(),d3.values())]
print(lst)  # 输出 [('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)]

2. 将多个列表中的元素按照一定规律进行排列。

a = [1,2,3,4,5]
b = [6,7,8,9,10]
c = [11,12,13,14,15]
lst = [x for y in zip(a,b,c) for x in y]
print(lst)  # 输出 [1, 6, 11, 2, 7, 12, 3, 8, 13, 4, 9, 14, 5, 10, 15]

从上面的例子可以看出,zip()函数是Python中非常实用的一个函数,有很多的应用场景。使用它可以让我们的代码更加简洁、高效,同时也能够提高我们的工作效率。