Python矩阵的结果与上一条记录相同

时间:2019-04-29 10:16:03

标签: python python-3.x list matrix

我尝试使用具有固定数量元素的list列表创建矩阵。我为每个单元格使用0初始化矩阵,然后遍历所有元素,并在每个单元格中将每个行号和列号相乘。

test = [[0] * (10)] * 10
for i in range(10):
    for j in range(10):
        test[i][j] = i * j

当我打印test时,结果是

[[0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45,54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9,18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63,72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81]]

看起来只有i和最后一个i=9被计算。我期望的是行和列乘法的结果。 如何在python中做到这一点?

2 个答案:

答案 0 :(得分:0)

我不会首先实例化一个空列表,仅使用列表理解即可。

test = [[i * j for i in range(10)] for j in range(10)]

脾气暴躁:

size = np.arange(10)

test = size * size[:, None]

答案 1 :(得分:0)

您的程序列表中已被克隆10次,因此它将对矩阵进行最后修改。