为了账号安全,请及时绑定邮箱和手机立即绑定

在python中按列连接数组

在python中按列连接数组

陪伴而非守候 2023-03-16 09:51:23
我有一个数组列表,其中每个数组都是一个列表列表。我想把它变成一个包含所有列的数组。我试过使用 for 循环来完成这项工作,但感觉它在列表理解中应该是可行的。有没有一个很好的单线可以做到这一点?    Example Input: [[[1,2],[3,4],[5,6]],[[7,8],[9,10],[11,12]]]        Desired Output: [[1,2,7,8],[3,4,9,10],[5,6,11,12]]注意:示例在主列表中只有两个数组,但我的实际数据有更多,所以我正在寻找适用于 N 个子数组的东西。编辑:试图解决这个问题的例子适用于两个但不概括:[input[0][i]+input[1][i] for i in range(len(input[0]))]这些不起作用,但显示了这个想法:[[element for table in input for element in row] for row in table][[*imput[j][i] for j in range(len(input))] for i in range(len(input[0]))]编辑:仅使用列表理解和压缩的选定答案,但所有答案(截至目前)都有效,因此请使用最适合您的风格/用例的答案。
查看完整描述

4 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

您可以从标准列表扁平化模式和中概括这一点zip

>>> L = [[[1,2],[3,4],[5,6]],[[7,8],[9,10],[11,12]]]

>>> list([y for z in x for y in z] for x in zip(*L))

[[1, 2, 7, 8], [3, 4, 9, 10], [5, 6, 11, 12]]

>>> L = [[[1,2],[3,4],[5,6]],[[7,8],[9,10],[11,12]],[[13,14],[15,16],[17,18]]]

>>> list([y for z in x for y in z] for x in zip(*L))

[[1, 2, 7, 8, 13, 14], [3, 4, 9, 10, 15, 16], [5, 6, 11, 12, 17, 18]]


查看完整回答
反对 回复 2023-03-16
?
开满天机

TA贡献1786条经验 获得超13个赞

如果你不介意它是列表中的一个元组。你也可以尝试:


from itertools import chain

a = [[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]], [[13, 14], [15, 16], [17, 18]]]

output = list(map(list, map(chain.from_iterable, zip(*a))))


# [[1, 2, 7, 8, 13, 14], [3, 4, 9, 10, 15, 16], [5, 6, 11, 12, 17, 18]]


查看完整回答
反对 回复 2023-03-16
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

这是一种方法:


initial = [[[1,2],[3,4],[5,6]],[[7,8],[9,10],[11,12]]]

output = [a+b for a, b in zip(*initial)]


print(output)

如果您有更多列表,这也适用:


import itertools


initial = [[[1,2],[3,4],[5,6]],[[7,8],[9,10],[11,12]],[[13,14],[15,16],[17,18]]]

output = [list(itertools.chain.from_iterable(values)) for values in zip(*initial)]


print(output)


查看完整回答
反对 回复 2023-03-16
?
米脂

TA贡献1836条经验 获得超3个赞

这样就可以了,我将您的输入命名为first

[*map(lambda x: list(i for s in x for i in s), zip(*first))]
[[1, 2, 7, 8], [3, 4, 9, 10], [5, 6, 11, 12]]


查看完整回答
反对 回复 2023-03-16
  • 4 回答
  • 0 关注
  • 251 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号