在Python中建⽴N维数组并赋初值
在Python中,由于不像C++/Java这样的语⾔可以⽅便的⽤a[i][j]=0的⽅式,建⽴⼆维数组并赋初值,所以需要⼀个相对巧妙的⽅法。
可以⽤列表解析的⽅式,eg:
>>> mat=[[0 for i in range(5)] for j in range(5)]
>>> mat
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
这样就建⽴了⼀个⼆维5X5的数组并把初值设置为0.
下⾯给⼀个建⽴MXN的⼆维数组,并把初值设为x的函数:
def Get_MXN_Array_initx(m,n,x):
return [[x for i in range(m)] for j in range(n)]
如果要建⽴三维数组可以⽤类似的⽅式,以下是⼀个函数,建⽴多维的,每⼀维长度都可以指定,所有元素初始值为x的数组。
参数:m为整数,表⽰数组的维度;n为数组,储存每⼀维数组的长度
感谢dearchi指出下列代码中的错误,已改正。
原理:在使⽤低维数组⽣成⾼维数组的过程中,确实应当使⽤deepcopy复制低维数组,不然会导致⾼维数组中的每个元素实际上都是同⼀个低维数组,当有⼀个低维数组被修改,⾼维数组中的其他低维数组也跟着被修改了,即“牵⼀发⽽动全⾝”。详见dearchi的评论。
import copy
def Get_Mdimensions_NlengthArray_initValuex(m,n,x):
if m!=len(n):
print("Error!指定每⼀维数组的长度时出错")
else:
java定义一维数组并赋值
result=[x for i in range(n[-1])]
dimensions_num=1
while dimensions_num<m:
result=[copy.deepcopy(result) for i in range(n[-1-dimensions_num])]
dimensions_num+=1
return result
eg:我们创建⼀个2维,3X2,初始值为0的数组,各维度的长度以数组的形式传⼊参数n:
>>> Arr=Get_Mdimensions_NlengthArray_initValuex2(2,[3,2],0)
>>> Arr
[[0, 0], [0, 0], [0, 0]]
当传⼊维度数组的长度与数组维度不匹配时:
>>> Arr=Get_Mdimensions_NlengthArray_initValuex2(2,[3,2,3],0)
Error!指定每⼀维数组的长度时出错

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