如何将m * n列表转换为n * m列表?

时间:2020-10-28 16:08:25

标签: python

如果ther是列表[[1,2,3],[4,5,6]],如何将其转换为[[1,4],[2,5],[3,6]] ?

def colu(j, data):
    return [data[i][j] for i in range(len(data))]

我知道这段代码是从右到左的,但是我不知道如何以相反的方式来做。

3 个答案:

答案 0 :(得分:1)

transpose嵌套列表的惯用方式是:

lst = [[1, 2, 3], [4, 5, 6]]

res = list(zip(*lst))
print(res)  # [(1, 4), (2, 5), (3, 6)]

如果您坚持使用列表而不是元组:

res = [list(sublist) for sublist in zip(*lst)]

答案 1 :(得分:1)

使用numpy NumPy旨在提供一个比传统Python列表快50倍的数组对象。

import numpy as np
numpy_lst = np.array(lst)
transposed = np.transpose(numpy_lst)
#if you convert back to list use
transposed_list = transposed.tolist()

答案 2 :(得分:0)

您可以将list comprehensionzip一起使用:

In [2833]: l = [[1,2,3],[4,5,6]]
In [2842]: l1 = [list(i) for i in list(zip(*l))]

In [2843]: l1
Out[2843]: [[1, 4], [2, 5], [3, 6]]