python初始化⼀个⼆维数组_⼆维数组初始化
对于⼀个M⾏N列的⼆维数组,可以看成是M⾏⼀维数组,⼀维数组是N列。例如 int array[3][2]; 是⼀个3⾏2列的⼆维数组,其实,如同3个⼀维数组,⼀维数组是2列。那么,对3⾏2列的⼆维数组可以初始化如下:
int array[3][2] = {{1, 2}, {3, 4}, {5, 6}};
相当于:
(1) {1, 2}数据,赋给array[0][] 表⽰第 1⾏数组;
(2) {3, 4}数据,赋给array[1][] 表⽰第 2⾏数组;
(3) {5, 6}数据,赋给array[2][] 表⽰第 3⾏数组;
这种赋值⽅式,称为:分组赋值,每⼀组数据,赋给相应的⼀⾏数组元素。
⼆维数组的初始化赋值,还可以是连续赋值,例如:
数组全部赋值为1intarray[3][2] = {1, 2, 3, 4, 5, 6};
此时,就把{1, 2, 3, 4, 5, 6}表⽰的⼀组数据,赋给⼆维数组。赋值的规则如下:
(1) array[3][2]表⽰3⾏2列数据;每⼀⾏是2个元素;
(2) 从{1, 2, 3, 4, 5, 6}中取出2个元素,赋给第⼀⾏元素;所以,第⼀⾏元素得到{1, 2}数据组,剩下{3, 4, 5, 6}数据组;
(3) 从{3, 4, 5, 6}数据组中取出2个元素,赋给第⼆⾏元素,所以,第⼆⾏元素得到{3, 4}数据组,剩下{5, 6}数据组。
(4) 从{5, 6}数据组中取出2个元素,赋给第三⾏元素,所以,第三⾏元素得到{5, 6}数据组,没有剩下任何数据。
(5) 最终,把初始化赋值的数据组划分成⼀⾏⼀⾏元素,设置到⼆维数组中。
注意:如果初始化赋值数据组的元素⽐⼆维数组元素少,例如:
intarray[3][2] = {1, 2, 3};
此时,只够设置前3个元素,那么,剩下的数组元素,默认设置为0值。程序测试例⼦如下:
程序运⾏结果如下:
可以看到,对array数组和array1数组的赋值,都是对所有的元素设置了有效值。对array3数组的赋值,初始化赋值{1, 2, 3}数据组,只能够设置前3个数值元素,后⾯没有初始化值的数组元素,默认设置为0值。
在上⾯的例⼦中,初始化array1数组的时候,有:
intarray1[3][2] = {1, 2, 3, 4, 5, 6};
那么,根据array1数组定义的列数为2,表⽰2个元素表⽰⼀⾏数据。所以,从初始化列表{1, 2, 3, 4, 5, 6}中取出2个元素来设置给⼀⾏数组。最终,根据列数是2,就可以2个元素划分为⼀组数据,得到{{1, 2}, {3, 4}, {5, 6}}这样的数据组。在这个划分数据的过程中,只有列数2对划分数据有影响,⾏数没有任何影响。
所以,我们可以在初始化定义数组的时候,不⽤给出⾏数的定义,例如:
intarray1[][2] = {1, 2, 3, 4, 5, 6};
此时,定义array1⼆维数组,定义数组的时候初始化,确定了列数之后,可以不⽤给出⾏数的定义。
那么,根据列数是2,从初始化数值列表中,取出2个数据作为⼀⾏,得到{{1, 2}, {3, 4}, {5, 6}}数据组。此时,可以看到是3⾏数据组,那么,定义的数组就是有3⾏。程序测试例⼦如下:
程序运⾏结果如下:
可以看到,定义了⼆维数组a的列数是3,所以,⼀⾏数组存放3个元素。那么,第⼀⾏划分得到{1, 2, 3}数据,填充都第⼀⾏数组中;第⼆⾏划分得到{4, 5}数据;填充到第⼆⾏数组中。由于数组定义⼀⾏是3个元素,所以,第⼆⾏划分得到{4, 5}数据不够存放到a[1][2]元素,所以,a[1][2]元素⽤零填充;整个数组的长度是6个元素。
在上⾯的代码中,a[][]数组的元素是char类型,有6个元素。所以,数组使⽤sizeof()获取数组的容量,得到6个字节的容量。因为,⼀个char类型是占⽤1个字节,所以,6个元素就占⽤1*6 = 6个字节的容量。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。