python-3.x 如何将二维列表转换为列视图?

iyfjxgzm  于 2023-02-01  发布在  Python
关注(0)|答案(2)|浏览(159)

我有个二维列表

[["a1", "b1", "c1"], ["a2", "b2", "c2"]]

我想转置为列视图。每个内部列表的大小相同。
预期结果:

[['a1', 'a2'], ['b1', 'b2'], ['c1', 'c2']]

我在找一个简单的答案。
我已经尝试了下面的代码,但需要一行来初始化l_col变量,两行用于循环。

l = [["a1", "b1", "c1"], ["a2", "b2", "c2"]]

l_col = []
for i in range(len(l[0])):
    l_col.append([x[i] for x in l])

print(l_col)  # [['a1', 'a2'], ['b1', 'b2'], ['c1', 'c2']]

谢谢你的帮助。

f0ofjuux

f0ofjuux1#

在较新版本的Python中,可以用途:

A           = [["a1", "b1", "c1"], ["a2", "b2", "c2"]]
A_transpose = list(map(list,zip(*A)))

print('A_transpose: ', A_transpose)

# output:
#     A_transpose:  [['a1', 'a2'], ['b1', 'b2'], ['c1', 'c2']]

PS.对于许多应用程序来说,list(zip(*A))也可以工作,但是这个短命令在内部维度返回元组:在上面的代码中,我们通过引入map(list,...)纠正了这个问题。

7kjnsjlb

7kjnsjlb2#

[[x[i] for x in l] for i in range(len(l[0]))]

相关问题