在嵌套的Python列表中设置值会自动迭代

2024-06-25 23:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python列表,由model = [[[[0,0,0,0]]*4]*15]*5创建,这个列表看起来像这样(没有简短的点):model = [[[[0,0,0,0],...[0,0,0,0]]...[[0,0,0,0],...[0,0,0,0]]]...[[[0,0,0,0],...[0,0,0,0]]...[[0,0,0,0],...[0,0,0,0]]]]。问题是,当我尝试使用

def setLED(model,boardid,chipid,tankid,ledid,value): model[boardid][chipid][tankid][ledid]=value

每个4个0的列表都被设置为相同的。i、 e.如果我尝试使用setLED(model,0,0,0255),则每个4个0的列表中的第一个值将是255。预期的结果是,只有4个零的第一个列表(即模型[0][0][0][0])会被更改。我不认为有办法附上文件,但如果有人需要,我可以张贴清单的全部内容。你知道吗

提前感谢任何能找出原因的人。你知道吗

编辑:这是Nested List Indices的副本


Tags: 文件模型编辑列表modelvaluedef原因
1条回答
网友
1楼 · 发布于 2024-06-25 23:24:36

创建这样的数组时:

[[0]]*n

您正在创建一个数组,其中包含对同一数组的n个引用。您需要以另一种方式添加新数组。一种方法是使用列表理解,即

[[[ [0,0,0,0] for _ in range(4)] for _ in range(15)] for _ in range(5)]

它会创建新的数组,而不是重用引用。你知道吗

相关问题 更多 >