【问题标题】:change an array in a 2d matrix initialized with inf更改用 inf 初始化的二维矩阵中的数组
【发布时间】:2022-01-12 09:32:53
【问题描述】:

版本:python 3

代码很简单

dp = [[float('inf')] * 3] * 3

dp[0][0] = 1

我得到了什么

  • [[1, inf, inf], [1, inf, inf], [1, inf, inf]]

我期望得到什么

  • [[1, inf, inf], [inf, inf, inf], [inf, inf, inf]]

有什么线索吗?

【问题讨论】:

    标签: python


    【解决方案1】:

    list * number 表示不是列表的副本,而是 number 引用同一列表(相同的内存位置)。这就是为什么改变三个列表之一会改变其他列表的原因。

    解决方案可能是(使用循环创建列表):

    dp = [[float("inf")] * 3 for i in range(3)]
    

    另请参阅:Copy a list of list by value and not reference

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 2022-12-15
      • 2021-12-25
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      相关资源
      最近更新 更多