Skip to main content
 首页 » 编程设计

python之分配到列表列表中的位置

2025年05月04日9TianFang

假设我有一个 Python 值表。我以这种方式生成表格:

table = [[True] * 11] * 7 

这构成了一个包含 7 个列表的列表,每个列表包含 11 个 True 值:

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

假设我将 table[6][4] 更改为 False (table[6][4] = False)。我希望只有那个槽被改变:

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

但显然其他列表中的第 4 列也发生了变化:

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

这是怎么回事?

请您参考如下方法:

如果你这样做

table = [[True] * 11] * 7 

您创建了一个包含 11 个 True 的列表,然后将其包裹在一个列表中七层。不是通过复制它,而是通过多次引用它。

如果您创建 7 个不同的列表,例如在

table = [[True] * 11 for _ in range(7)] 

你过得更好。