gpt4 book ai didi

python - Python 中简单表的奇怪行为

转载 作者:行者123 更新时间:2023-12-01 06:05:18 26 4
gpt4 key购买 nike

我是Python初学者。 coin change problem的动态规划解法需要一个初始化的表,例如,基本上可以如下所示:

[
[1,0,0,0],
[1,0,0,0],
[1,0,0,0]
]

我这样指定了哪个表:

table=[[1]+[0]*3]*3

现在,如果我写

table[1][2]=1
for x in table: print x

我得到打印:

[1, 0, 2, 0]
[1, 0, 2, 0]
[1, 0, 2, 0]

而且我根本不知道为什么整个列都会改变而不是指定的数字。

最佳答案

错误出现在您未显示的代码中。大概,您初始化了您的列表,例如

a = [1, 0, 0, 0]
table = [a, a, a]

table = [[1, 0, 0, 0]] * 3

或类似的东西,这会导致一个列表包含三倍相同的列表对象。如果修改这个单个对象,它引用的所有地方都会发生变化,因为它只是一个对象。

如果您需要更多详细信息,请向我们展示创建表的代码。

初始化的正确方法是

table = [[1, 0, 0, 0] for i in range(3)]

或者简单地

table = [[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]

关于python - Python 中简单表的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com