我一直在浏览论坛,但尚未找到适合我的情况的答案。我需要能够获取一个 n × n 数组并在 Python-3 中转置它。给出的示例是我将此列表输入到函数中:
[[4, 2, 1], ["a", "a", "a"], [-1, -2, -3]] 需要转置为:
[[4, 'a', -1], [2, 'a', -2], [1, 'a', -3]] 所以基本上是垂直阅读而不是水平阅读。
我不能使用 zip 或 numpy 之类的东西,我必须创建自己的函数。
我已经为此绞尽脑汁两个晚上了,真是头疼极了。如果有人可以提供帮助并提供解释以便我可以学习,我将不胜感激。
编辑:
为了引用,我应该添加参数变量是 M。我们应该编写的函数是 trans(M):
最佳答案
一行:
def trans(M):
return [[M[j][i] for j in range(len(M))] for i in range(len(M[0]))]
结果:
>>> M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> trans(M)
[[1, 4, 7], [2, 5, 8], [3, 6, 9]
# or for a non-square matrix:
>>> N = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
>>> trans(N)
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
附加说明:如果您在 list comprehension 上查找教程,其中一个例子实际上是 transposition矩阵数组。
关于arrays - 如何在 Python 3 中转置数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23392986/