我有两个形式
的向量a = [[1,2,3],[1,2,3],[1,2,3]]
b = [[5,6,7],[5,6,7],[5,6,7]]
我希望输出为
c = [[1,2,3,5,6,7],[1,2,3,5,6,7],[1,2,3,5,6,7]]
我得到了这一行
c = [[a[i],b[i]] for i in range(len(a))]
但我的输出是
[[[1, 2, 3], [5, 6, 7]], [[1, 2, 3], [5, 6, 7]], [[1, 2, 3], [5, 6, 7]]
答案 0 :(得分:3)
zip和连接每个配对:
a = [[1,2,3],[1,2,3],[1,2,3]]
b = [[5,6,7],[5,6,7],[5,6,7]]
print([i + j for i,j in zip(a, b)])
哪会给你:
[[1, 2, 3, 5, 6, 7], [1, 2, 3, 5, 6, 7], [1, 2, 3, 5, 6, 7]]
或使用您自己的逻辑:
[a[i] + b[i] for i in range(len(a))]
用+连接是关键。如果您要编制索引,我会使用enumerate:
[ele + b[i] for i, ele in enumerate(a)]
答案 1 :(得分:2)
另一种方式:
>>> map(list.__add__, a, b)
[[1, 2, 3, 5, 6, 7], [1, 2, 3, 5, 6, 7], [1, 2, 3, 5, 6, 7]]
或使用operator
模块:
>>> map(operator.add, a, b)
[[1, 2, 3, 5, 6, 7], [1, 2, 3, 5, 6, 7], [1, 2, 3, 5, 6, 7]]
答案 2 :(得分:-1)
这是使用itertools模块的解决方案:
from itertools import chain, starmap
c = map(list, list(starmap(chain, zip(a, b))))
感谢Padraic的评论。在这一点上它太嵌套了,我建议使用它。