Python二维数组的创建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012505432/article/details/52218392

如果在Python中想要创建一个二维数组,我们该如何写呢?

>>> A = [0]* 3 * 4
>>> B = [[0]*3] * 4

是A还是B呢?当然是B了!还是先输出看一下:

>>> A
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> B
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

不出所料,我们应该按照B = [[0]*3]*4来创建二维数组。
!!!!!!!!BUT!!!!!!!!!
当你按照上述方式来创建二维数组的时候,如果你对二维数组中的一个数进行改变,会输出什么呢?我们来试一下,比如我们把第一行的第二个数字改为2,B[0][1] = 2,输出:

>>> B
[[0, 2, 0], [0, 2, 0], [0, 2, 0], [0, 2, 0]]

问号脸
为什么会是这样?!!
因为list在Python中是个可变类型啊亲!按照B = [[0]*3]*4来创建二维数组只是4个指向这个空列表元素的引用,修改任何一个元素都会改变整个列表的。
另一个栗子:

>>> A = [0]*3
>>> B = A
>>> B[0] = 1
>>> A
[1, 0, 0]

坑爹啊!!
所以,在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]]

所以下次在Python中创建二维数组时候记住了:

aList = [[0] * cols for i in range(rows)]

当然,如果你喜欢动一动手指就让整个矩阵发生翻天覆地变化的快感的话,当我没说~

猜你喜欢

转载自blog.csdn.net/u012505432/article/details/52218392