【问题标题】:Python matrix give the same result as in the last recordPython 矩阵给出与最后一条记录相同的结果
【发布时间】:2019-04-29 10:16:02
【问题描述】:

我尝试使用具有固定数量元素的列表创建一个矩阵。我为每个单元格初始化矩阵为 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]]

似乎只计算了最后一个 ii=9。我期望的是行和列乘法的结果。 如何在python中做到这一点?

【问题讨论】:

标签: python python-3.x list matrix


【解决方案1】:

我不会先实例化一个空列表,只需使用列表推导即可。

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

使用 Numpy:

size = np.arange(10)

test = size * size[:, None]

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2014-07-14
      • 2014-12-10
      • 1970-01-01
      相关资源
      最近更新 更多