0

我正在尝试将二维数组的特定值设置为 True。这是代码片段:

b [ [False] * 3] * 3
b[2][1] = True 

不幸的是,这会将整行设置为 True(因此b[0][1]将更改为 True)。关于发生了什么的任何想法?

编辑:

刚刚尝试了这段代码,它起作用了:

 b = []
 for i in range(3):
     b.append([False, False, False])
 b[1][2] = True

为什么它会在这种情况下工作而不是前者?

4

1 回答 1

0

[[False]*3]*3创建对同一[False,False,False]对象的三个引用,因此当您更改一项时,您的其他行/列也会更改。

[False, False, False]您的第二个版本通过为每一行/列创建一个新对象来避免这种情况。

于 2012-09-10T09:06:43.037 回答