如果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))]
我知道这段代码是从右到左的,但是我不知道如何以相反的方式来做。
答案 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 comprehension
与zip
一起使用:
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]]