无法更改多维Python bool-list的单个元素

Fre*_*nöw 0 python boolean multidimensional-array

我一直在苦苦挣扎数小时试图弄清楚为什么我的应用程序中会出现非常奇怪的结果.当他们肯定不应该做的事情时,事情就会继续"开启".我把它缩小到一个非常类似于以下代码段:

test=[[False]*28]*24

print(test[5][7])
print(test[6][7])
test[5][7]=True
print(test[5][7])
print(test[6][7])
Run Code Online (Sandbox Code Playgroud)

在这种特殊情况下,我只想改变第5个指标的第7个指标的值,但是,其他各种指数也是如此.运行这个会让我:

真正

真正

虽然我希望得到:

真正

有人理解为什么会这样吗?我忽略了什么吗?这与我如何初始化我的清单有关吗?我真的只想要一个24*28的名单bools = False.

mgi*_*son 5

该行test=[[False]*28]*24创建了对28个False值的相同列表的24个引用.你可能想要这样的东西:

test = [ [False]*28 for _ in range(24) ]
Run Code Online (Sandbox Code Playgroud)

这迫使创建了24个独立的列表False.


作为旁注 - 你应该考虑numpy.

import numpy as np
test = np.zeros((24,28),dtype=bool)
Run Code Online (Sandbox Code Playgroud)