gpt4 book ai didi

java - 来自 python 的转置矩阵

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:59 27 4
gpt4 key购买 nike

<分区>

我真的不明白这里的逻辑.......

def transpose(A):
output = [['']*len(A)] * len(A[0])
for j in range(len(A[0])):
for i in range(len(A)):
output[j][i] = A[i][j]
return output

输入:[[1,2,3],[4,5,6],[7,8,9]]

预期输出:[[1,4,7],[2,5,8],[3,6,9]]

我的输出:[[3,6,9], [3,6,9], [3,6,9]]

我知道我可以使用 zip 轻松解决这个问题,但我只想知道为什么这段代码会返回重复的列表。

新的更新,我添加了一些打印以了解过程

def transpose(A):
output = [['']*len(A)] * len(A[0])
for j in range(len(A[0])):
for i in range(len(A)):
output[j][i] = A[i][j]
print(j)
print(i)
print(output)
return output

输出是:

0
0
[[1, '', ''], [1, '', ''], [1, '', '']]
0
1
[[1, 4, ''], [1, 4, ''], [1, 4, '']]
0
2
[[1, 4, 7], [1, 4, 7], [1, 4, 7]]
1
0
[[2, 4, 7], [2, 4, 7], [2, 4, 7]]
1
1
[[2, 5, 7], [2, 5, 7], [2, 5, 7]]
1
2
[[2, 5, 8], [2, 5, 8], [2, 5, 8]]
2
0
[[3, 5, 8], [3, 5, 8], [3, 5, 8]]
2
1
[[3, 6, 8], [3, 6, 8], [3, 6, 8]]
2
2
[[3, 6, 9], [3, 6, 9], [3, 6, 9]]
[[3, 6, 9], [3, 6, 9], [3, 6, 9]]

因此,例如,循环的第一步。 j = 0 和 i = 0。但是,output[0][0]、output[1][0] 和 output[2][0] 都被循环改变了。这是为什么呢?????

我现在很迷茫。我用 Java 编写了相同的代码并且它运行正常。

public class TransposeMatrix {
public static int[][] transpose(int[][] A) {
int[][] result = new int[A[0].length][A.length];
for (int j = 0; j < A[0].length; j++) {
for (int i = 0; i < A.length; i++) result[j][i] = A[i][j];
}
return result;
}
}

这个问题的链接是:https://leetcode.com/problems/transpose-matrix/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com