我有一个像这样的矩阵:
matrix = [ [0, 0, 0], [0, 0, 0], [0, 0, 0] ]
我必须根据公式 (2 * i + 3 * j) mod 6 为每个元素分配一个值,其中 i 和 j 是索引。我正在使用以下代码进行迭代和赋值:
for i in range(len(matrix)): for j in range(len(matrix[i])): matrix[i][j] = (((2 * i) + (3 * j)) % 6)
但我有这个输出:
matrix = [ [4, 1, 4], [4, 1, 4], [4, 1, 4] ]
而不是预期的:
matrix = [ [0, 3, 0], [2, 5, 2], [4, 1, 4] ]
我该如何解决这个问题?另外,我不能使用 NumPy 来解决这个问题。
这不是您创建阵列的方式!如果你这样做了,它会起作用的。你所做的是
matrix = [[0]*3]*3
这为您提供了对单个列表对象的三个引用,而不是三个单独的列表对象。将其初始化为
matrix = [[0]*3 for _ in range(3)]
或者更好的是,使用 numpy.