连接并展开两个嵌套的python lis

2024-04-25 03:54:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个向量

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]]

Tags: inforlenrange向量电话
3条回答

以下是使用itertools模块的解决方案:

from itertools import chain, starmap
c = map(list, list(starmap(chain, zip(a, b))))

感谢Padraic的评论。在这一点上它太嵌套了,我不建议使用它。你知道吗

另一种方式:

>>> 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]]

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)]

相关问题 更多 >