最近写面试题的时候遇到了自己都想不到的奇怪小错误
多维数组
在创建多维数组的时候,本来应该是用嵌套的for循环来生成[[0 for i in range(m)] for j in range(n)]
(因为一般网测不能调用numpy,不然就直接用numpy搞了)
但是最近想要偷懒的时候尝试用 [[0] * n] * m
来创建,结果疯狂遭遇bug。
最终原因是发现这样创建出来的数组,每一行都是第一行的引用,所以每次操作大家都会一起变
(但是这种方法可以创建一维的)
list的复制
我一直以为a=b
就是list的复制了,但是并不是这样的!!这样的话a是一个关于b的reference,并不是复制b,改变的时候是会一起改变的
下面几种方法可以用:
a = list(b)
a = b[:]
a = b * 1
a = copy.copy(b) #需要import copy