没想到更高明的做法,这里先给出一个朴素版的,自然也是二层循环,不过外层是遍历列,内层遍历行:
def transpose(data):
newdata = []
for j in range(len(data[0])):
row = [data[i][j] for i in range(len(data))]
newdata.append(row)
return newdata
当然也可借助 numpy 下的多维数组:
def transpose(data):
return [list(row) for row in np.array(data).T]
不出所料,很快就让我发现了最为精简版的 list of lists 的转置:
def transpose(X):
m, n = len(X), len(X[0])
return [[X[i][j] for i in range(m)] for j in range(n)]