初始化二维数组

时间:2015-09-15 07:25:26

标签: python arrays python-2.7

我有一个通过以下方式启动的二维数组,

array = [[False] * 2]] * 3。如果我更新了值a[0][0] = True

假设的结果是:

[[True,False],[False,False],[False,False]]

然而,python解释器显示结果:

[[True,False],[True,False],[True,False]]

1 个答案:

答案 0 :(得分:0)

基本上,您使用的语法是有效的 - 但它并不像您认为的那样。

当您使用该语法创建列表时,您实际上并没有创建唯一对象;您正在创建对同一对象的其他引用。您可以使用其任何引用更改该列表,但一旦更改,所有引用仍将指向相同(更新)的列表。为了说明这一点,请尝试以下方法:

array = [["cat"]]*3
print(array)
array[0][0] = "dog"
print(array)

第一张照片将显示[['cat'],['cat'],['cat']],根据您的预期,它应该看起来正确。但那些不是唯一的字符串。它们都是对同一个字符串的引用。所以当我们改变第一个(位于0,0)时,下一个打印给我们:[['dog'],['dog'],['dog']]

这就是它发生的原因。