如果我有以下矩阵:
m = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
如何返回如下所示的列表
[[1, 4, 7],
[2, 5, 8],
[3, 6, 9]]
不使用内置函数?
编辑:我可以使用len()和range()可以使用嵌套式推导式:
[[row[i] for row in m] for i in range(len(m[0]))]
如果要避免使用典型的换位习惯用法zip(*m)
(如果需要精确类型,则使用[*map(list, zip(*m))]
),因为它过于专用。
奇怪的做法:
m = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
res = map(lambda *args: args, *m)
print(list(res))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
如果需要列表:
res = list(map(lambda *args: list(args), *m))
print(res)
替代:
res = [*map(lambda *args: list(args), *m)]
try this
m = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
result=[[0 for i in range(len(m))] for j in range(len(m[0]))]
for i in range(len(m)):
for j in range(len(m[0])):
result[j][i]=m[i][j]
print(result)