Python 创建一维数组、二维数组和N维数组
我们已经很熟悉在C++上创建一维二维数组了,那么如何在Python上创建二维数组呢
>>> A = [0]*3 >>> B = [[0]*2]*3
这样就可以得到我们的一维数组和二维数组了,我们可以看一下结果
>>> A [0, 0, 0] >>> B [[0, 0], [0, 0], [0, 0]]
似乎好像这样的方法,就能很好的创建一个二维数组,但是,如果简单认为就这样就大错特错了,python有个东西就是共享地址,所以我们这里其实是一个深拷贝,我们同时也把我们地址复制了,所以我们改变其中的数,也会改变,我们可以看一个例子。
>>> B[0][0] = 2 >>> B [[2, 0], [2, 0], [2, 0]]
真的是坑爹啊,我被这个可是弄惨了,如果你觉得将其作为另一个变量,实际上我们的id也就是地址也是没有改变的,没什么区别的,任意修改一个元素就会修改整个列表的,并且python中的列表是一个可变类型,所以就会有这样的结果。
那么正确的做法应该是什么,我查了查资料,这样创建我们Python的列表
>>> C = [[0]*3 for i in range(4)] >>> C [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> C[0][1] = 2 >>> C [[0, 2, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
这样就不会造成随意改一改变量,我们的整个列表都被改变了,最后总结一下如何动态创建数组
aList = [[0] * cols for i in range(rows)]
每日一句
The shortest way to do many things is to only one thing at a time.
做许多事情的捷径就是一次只做一件事。