假设我有一个 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)]
你过得更好。
