【问题标题】:Strange behaviour when update a 2D list in Python3 [duplicate]在 Python3 中更新二维列表时的奇怪行为 [重复]
【发布时间】:2021-11-25 09:14:24
【问题描述】:

我是一个使用 Python3 的新手。

这个我不太明白:

a = [[0]*4]*1
b = [[1,2],[3,4]]

如果我这样做:

a[0][0] = b[0][0]

不只是用1 更新a[0][0]a=[[1],[0],[0],[0]]

整个列表变成:

a=[[1],[1],[1],[1]]

谁能告诉我如何在不出现此错误的情况下启动正确的 MxN 矩阵?

非常感谢!

【问题讨论】:

  • 我无法重现你的代码,你一定已经完成了a = [[0]] * 4
  • 非常感谢您的及时答复。我使用 a = [[0] * 4] * 1 来启动一个 4x1 列表。你能告诉我如何在不出现这种奇怪行为的情况下启动 MxN 列表吗?

标签: python arrays python-3.x list


【解决方案1】:

重构后,用代码:

a = [[0],[0],[0],[0]]
b = [[1,2],[3,4]]

a[0][0] = b[0][0]

print(a)

输出是预期的:[[1], [0], [0], [0]]

尝试将此代码复制/粘贴到您的 IDE 中并查看输出,如果您仍然得到 a=[[1],[1],[1],[1]],那么这可能是您的 python 环境有问题或完全不同的问题。除非我错过了什么。

【讨论】:

  • 感谢您的及时回复!我用 [0]*4 启动了a,所以我得到了错误。很抱歉没有在问题中说清楚。谢谢你的时间:)
  • 您仍然收到错误消息吗?因为否则只需使用我上面的代码启动a
猜你喜欢
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 2016-01-28
相关资源
最近更新 更多