如何以列而不是行的形式打印网格状列表中的数据?

问题描述 投票:0回答:2

所以我有一个名为

data_lst
的列表:

[1,2,3,4]
[3,2,4,1]
[4,3,1,2]

我希望我的输出是按列的数字,例如

[1,3,4]
[2,2,3]
[3,4,1]
[4,1,2]

到目前为止我已经尝试这样做了...

f = []
for x in data_lst:
    for w in range(0,len(x)-1):
        f.append(data_lst[w])
print(f)

但是,我得到的输出与我提供的输入相同,即..

[1,2,3,4]
[3,2,4,1]
[4,3,1,2]

我应该更改代码中的哪些内容?

python list iteration multiple-columns
2个回答
1
投票

该运算称为矩阵转置。 您可以通过多种方式完成此操作,例如使用 numpy、zip 等。 这只是修改代码的解决方案。

data_lst = [
  [1,2,3,4],
  [3,2,4,1],
  [4,3,1,2]
]


rowLen = len(data_lst)
colLen = len(data_lst[0])
f = [[0 for _ in range(rowLen)] for _ in range(colLen)]
for c in range(colLen):
    for r in range(rowLen):
        f[c][r] = data_lst[r][c]
print(f)

0
投票

如果由于leetcode等限制而无法使用框架或库,可以使用

numpy
进行回答,如下所示。

import numpy as np
from pprint import pprint

data_lst = np.array([
    [1,2,3,4],
    [3,2,4,1],
    [4,3,1,2],
])

pprint(np.array(data_lst.T.tolist()))
# array([[1, 3, 4],
#        [2, 2, 3],
#        [3, 4, 1],
#        [4, 1, 2]])
© www.soinside.com 2019 - 2024. All rights reserved.