这个问题在这里已有答案:
我正在努力在Python中组合两个数组的值。我想将两个数组的值作为对。
示例:假设我们有两个数组a
和b
如下:
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)]])
我不确定它是否可以作为数组或列表完成。
你可以结合使用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)]]
这正常工作,因为a
和b
具有相同数量的内部列表,并且内部列表具有相同的长度。 zip()
只为两个列表创建元组,两者的长度都更短。对于非常长度列表,您可以使用itertools.zip_longest(...)
,它使用None
或指定的默认值来填充较短的列表。