我有一个 Python 作业,我必须在其中转置一个多维矩阵(3x3、4x4、5x5...)而不使用任何 for 循环,而只使用列表理解。
以 2x2 矩阵为例,我们有:
a2 = [[1, 2], [3, 4]]
n = len(a2)
print [[row[i] for row in a2] for i in range(n)]
但我不确定我是否真的理解它是如何工作的或如何将其调整为 3x3、4x4、5x5... 矩阵
例如,用
a3 = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
我不一定要你给我答案(还是得自己想办法),但任何提示都会很有帮助!
提前致谢!
最佳答案
我很确定你已经在你的例子中......
a2 = [[1, 2], [3, 4]] #2x2
n = len(a2)
print [[row[i] for row in a2] for i in range(n)]
a2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #3x3
n = len(a2)
print [[row[i] for row in a2] for i in range(n)]
对象:
a3 = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
不是 2x2、3x3 或 4x4 -- 它是 2x2x2。您需要准确解释转置
对该数据结构的意义。
附带说明一下,如果您没有将列表理解作为约束,那么按照 Lattyware 的建议使用 zip
是您应该这样做的方式——我只是想指出您的解决方案已经适用于 NxN
情况。
关于python - 使用列表理解在 Python 中转置多维矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524235/