python多维数组的创建,以及在创建数组时为任意位置赋值
创建数组
创建一维数组
width = 2;
m = [0 for i in range(width) ]
# m = [0, 0]
这样我们就创建好了一个宽度为2的数组
创建多维数组
width = 2; height = 3;
m = [[0 for i in range(width) ] for j in range(height) ]
# m = [ [0, 0],
# [0, 0],
# [0, 0] ]
这样我们就创建好了一个宽度为2,高度为3的二维数组
如果想要更多的维度,只要在最外层增加[ ? for x in range(Length) ]
即可。
在创建数组时为任意位置赋值
我们只需要为初始值加上三元运算即可,也就是
a if cond else b
如果cond为真,则赋值为a,如果cond为假,则赋值为b
在创建时为某一行或者某一列赋值
width = 3; height = 3;
m = [[0 if i!= 1 else 1 for i in range(width) ] for j in range(height) ]
# m = [ [0, 1, 0],
# [0, 1, 0],
# [0, 1, 0] ]
width = 3; height = 3;
m = [[0 if j!= 1 else 1 for i in range(width) ] for j in range(height) ]
# m = [ [0, 0, 0],
# [1, 1, 1],
# [0, 0, 0] ]
在创建二维数组时为对角线赋值
s = "abc"
width = 3; height = 3;
m = [[0 if i!=j else s[i] for i in range(width) ] for j in range(height) ]
# m = [ ['a', 0, 0],
# [0, 'b', 0],
# [0, 0, 'c'] ]
这样我们就创建好了一个3*3的二维数组,并且对角线上为s中的值。
在创建二维数组时每隔一个赋值一次
width = 3; height = 3;
m = [[0 if (i+j)%2==1 else 1 for i in range(width) ] for j in range(height) ]
# m = [ [1, 0, 1],
# [0, 1, 0],
# [1, 0, 1] ]
在创建二维数组时为单独某几个位置赋值
pos = [ [0, 0], [1, 2], [2, 1] ]
width = 3; height = 3;
m = [[0 if [i, j] not in pos else 1 for i in range(width) ] for j in range(height) ]
# m = [ [1, 0, 0],
# [0, 0, 1],
# [0, 1, 0] ]