基于索引将多个列表转换为单个列表



我是python的新手,我正试图根据索引值将三个不同的列表合并为一个列表,如下例所示:这三个列表大小相同。

A=['ABC', 'PQR', 'MNO']
B=['X', 'Y', 'Z']
C=['1','2','3']***

我想要的输出是P=[['ABC','X','1'],['pcr','Y','2'],[MNO','Z','3']]

提前谢谢。

我通常使用numpy,因为它是一个简单的转换,并且可以使用任意多的列表:

import numpy as np
A = ['ABC', 'PQR', 'MNO']
B = ['X', 'Y', 'Z']
C = ['1', '2', '3']
lists = [A, B, C]
numpy_array = np.array(lists)
transpose = numpy_array.T
transpose_list = transpose.tolist()
print(transpose_list)

以下是使用for looprange()函数的解决方案:

A=['ABC', 'PQR', 'MNO']
B=['X', 'Y', 'Z']
C=['1','2','3']
list1=[]
for i in range(len(A)):
list1.append([A[i],B[i],C[i]])
display(list1)

输出:

[['ABC', 'X', '1'], ['PQR', 'Y', '2'], ['MNO', 'Z', '3']]

使用具有zip()功能的for loop

l=[]
for a,b,c in zip(A,B,C):
l.append([a,b,c])

display(l)

输出:

[['ABC', 'X', '1'], ['PQR', 'Y', '2'], ['MNO', 'Z', '3']]

您不想使用for loop吗?

下面是map()的功能:

result = list(map(lambda a, b, c: [a,b,c] , A, B,C))
display(result)

输出:

[['ABC', 'X', '1'], ['PQR', 'Y', '2'], ['MNO', 'Z', '3']]

您可以使用列表理解来获得所需的输出;

a=[[x,y,z] for x,y,z in zip(A,B,C)]
print(a)

最新更新