Python:组合两个数组的值[重复]

问题描述 投票:3回答:1

这个问题在这里已有答案:

我正在努力在Python中组合两个数组的值。我想将两个数组的值作为对。 示例:假设我们有两个数组ab如下:

a = [[1, 2, 3], [4, 5, 6], [0, 3, 1]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print() 

b = [[4, 0, 3], [6, 3, 6], [1, 4, 1]]

for i in range(len(b)):
    for j in range(len(b[i])):
        print(b[i][j], end=' ')
    print()

如何将两个数组的值组合成对,类似于:

array([[(1,4), (2,0), (3,3)],
       [(4,6), (5,3), (6,6)],
       [(0,1), (3,4), (1,1)]])

我不确定它是否可以作为数组或列表完成。

python arrays
1个回答
2
投票

你可以结合使用list comprehension和zip()来做到这一点:

a = [[1, 2, 3], [4, 5, 6], [0, 3, 1]]
b = [[4, 0, 3], [6, 3, 6], [1, 4, 1]]

c = [ list(zip(a[x],b[x])) for x in range(len(a))] # works b/c len(a) = len(b)

print(c)

产量

[[(1, 4), (2, 0), (3, 3)], [(4, 6), (5, 3), (6, 6)], [(0, 1), (3, 4), (1, 1)]]

这正常工作,因为ab具有相同数量的内部列表,并且内部列表具有相同的长度。 zip()只为两个列表创建元组,两者的长度都更短。对于非常长度列表,您可以使用itertools.zip_longest(...),它使用None或指定的默认值来填充较短的列表。

© www.soinside.com 2019 - 2024. All rights reserved.