python 定义数组,python数组的定义方式
加个. append(a))就好了。按顺序加起来,没问题。
使用时,可以完全使用下标。
代码复制如下代码
一个[0].
a[1].
但是,引用不存在的下标会导致异常。在这一点上,只要你需要添加元素,然后引用它们,就没有问题。如果要保留空间,可以使用循环将值传递给列表,为每个元素设置默认值,然后引用它。
例如:
代码复制如下代码
a=[]
对于范围(100):
追加([]).
福建兰(100):
甲[我]。追加(0)).
这将生成一个默认值为100*100的数组。
创建一个宽度为3、高度为4的数组
# [ 0,0,0 ],
# [ 0,0,0 ],
# [ 0,0,0 ],
# [ 0,0,0 ]
MyList=[[0] * 3] * 4但是,当myList[0][1]=1被操作时,值将被分配给整个第2列,如下所示
[ 0,1,0 ],
[ 0,1,0 ],
[ 0,1,0 ],
[ 0,1,0 ]
为什么?我一时也不知道,然后就搜了一下Python标准库,找到了答案。
list * n——nshallowCopy sovlistconcatenated,n个列表的写拷贝连接。
示例:
代码复制如下代码
列表=[[]] * 3
以表格或栏的形式排列
[ () ]、[ () ]、[ () ]、[ ) ] )。
列表[0]。附加(3).
以表格或栏的形式排列
[3]、[3]、[3]、[3]、[3]][[]]
因为是包含空列表元素的列表,[[]]*3表示对这个空列表元素的三个引用,并修改其中一个。
一个元素将改变整个列表:
因此,必须使用其他方法来创建多维数组,以避免浅层复制:
代码复制如下代码
lists=[]for iinra(www . 111 cn . net)nge(3)]
列表[0]。附加(3).
列表[1]。附加(5).
列表[2]。附加(7).
以表格或栏的形式排列
[3]、[5]、[7]前面的二维数组创建方法是:
mylist=[[0]*3]forIinrange(4) ]
例如,要动态创建二维数组:
代码复制如下代码
int * * pTwoDimArr=new int[10][20];
pTwoDimArr[0][0]=5;
这看起来很直观,但是编译会出错。
代码复制如下代码
cannot convert from int(*)[20] to int * *).
如果是这样:
代码复制如下代码
int pTwoDimArr[10][20];
pTwoDimArr[0][0]=5;
是的,我可以。但是,因为这个数组的内存是分配给堆栈的,所以,
代码复制如下代码
void main () }
int pTwoDimArr[1000][1000];
() ) ) ) )。
编译没问题。如果你执行它,它就会死。
作为一个全局变量很好,但最好设置为零。
代码复制如下代码
int pTwoDimArr[1000][1000];
void main () }
() ) ) ) )。
像这样:
代码复制如下代码
int(* ptwodimarr)(1000)=new int)1000)1000;
pTwoDimArr[0][0]=5;
可以动态分配,但是要记得释放内存。此外,尺寸必须是固定的。(第一维度变量),你是不是有点不开心?
c是一种“静态”语言。定义多维数组时,第一维不变量的多维必须固定为常数,因为一切都必须在编译时确定。因为数组是线性存储在内存中的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。