自已写的一个大bug.

自已写的一个大bug.

今天写了一个代码,搞了快一个小时,也没有找到bug在哪里,最后才发现。

a=[[0]*3]*5

输出结果是

>>> a= [[0]*3]*5
>>> a
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> 

接下来就是出bug的时候了

>>> a[0][0]=8
>>> a
[[8, 0, 0], [8, 0, 0], [8, 0, 0], [8, 0, 0], [8, 0, 0]]
>>> a[0][1] = 3
>>> a
[[8, 3, 0], [8, 3, 0], [8, 3, 0], [8, 3, 0], [8, 3, 0]]
>>> 

然后一维的时候有这样

>>> b=[0]*5
>>> b
[0, 0, 0, 0, 0]
>>> b[0]=2
>>> b
[2, 0, 0, 0, 0]
>>> 

又做了下面的实验


>>> c=[[0]]*5
>>> c
[[0], [0], [0], [0], [0]]
>>> c[0]=1
>>> c
[1, [0], [0], [0], [0]]
>>> c=[[0]]*5
>>> c
[[0], [0], [0], [0], [0]]
>>> c[0][0]=1
>>> c
[[1], [1], [1], [1], [1]]
>>> 

惊呆了,以后再也不这样用了。 还是老老实实的这样

>>> d = [[0 for _ in range(3)] for _ in range(5)]
>>> d
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> d[0][0]=3
>>> d
[[3, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> 


打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦