python中列表的初始化

前言

昨天在做算法题的时候,整个思路、代码和参考答案都是基本一样的情况下,输出的结果就是不对,我还以为是思路有问题,又看了别人的题解,发现都没什么问题,这时我看到了列表初始化的部分,这是唯一可能出错的地方,改掉之后果然对了,初始化如下

dp = [[0] * 3 for _ in range(4)] # 参考答案初始化
dp = [[0, 0, 0]] * 4   # 我的答案初始化 

这才知道我的那种初始化方式,实际上是将子列表的引用复制了4次,在这种情况下,改变任一子列表的元素,其它子列表的元素也会随之改变,而参考答案的那种初始化不会出现上述情况。

参考资料

[1] python list的深拷贝与浅拷贝-以及初始化空白list的方法(1)
[2] python3初始化list的常见用法
)

你可能感兴趣的:(python中列表的初始化)