Python 创建非对称多维数组 上下文

Python 创建非对称多维数组 上下文,python,arrays,Python,Arrays,我还没有发现一个关于如何在python中创建“不对称*”多维数组的通用问题*对于不对称,我的意思是,一些元素本身就是数组,它们的长度不同 尝试0 请注意,这会产生错误:未定义的名称i 问题: 如何使用参数在python中构造这样一个数组 ^假设: 维度0的长度a=2 维度0的第一个元素的长度b=2 维度0的第二个元素的长度c=3 维度2的长度为5维度4的长度d=5 尺寸3的长度为5尺寸4的长度e=6 我真的不确定您所说的示例是什么意思,但这可能会有所帮助 如果在如下列表中定义所需的尺寸: di

我还没有发现一个关于如何在python中创建“不对称*”多维数组的通用问题*对于不对称,我的意思是,一些元素本身就是数组,它们的长度不同

尝试0 请注意,这会产生错误:
未定义的名称i

问题: 如何使用参数在python中构造这样一个数组

^假设:

  • 维度0的长度
    a=2
  • 维度0的第一个元素的长度
    b=2
  • 维度0的第二个元素的长度
    c=3
  • 维度2的长度为5维度4的长度
    d=5
  • 尺寸3的长度为5尺寸4的长度
    e=6

我真的不确定您所说的示例是什么意思,但这可能会有所帮助

如果在如下列表中定义所需的尺寸:

dims=[
[4, 5],
[5, 6, 2],
]
您可以使用一个非常简单的递归函数:

def make_dims(dims,fill_func=int):
如果isinstance(dims,int):
返回[fill_func()用于范围内的(dims)]
return[在dims中为x设置dims(x,fill\u func)]
l=制造尺寸(尺寸)
要创建具有如下“维度”的列表:

len(l)==len(dims)==2
len(l[0])==len(dims[0])==2
len(l[0][0])==dims[0][0])==4
len(l[0][1])==dims[0][1])==5
len(l[1])==len(dims[1])==3
len(l[1][0])==dims[1][0]==5
len(l[1][1])==dims[1][1]==6
len(l[1][2])==dims[1][2]==2
所有最后一级元素都是
fill\u func()
producer返回的内容


对于您的示例,
second\u dim=[[1,5],[1,5,9]
调用
make\u dim(second\u dim)
只需开箱即用

但是,如果您确定不需要此解决方案提供的更多维度的灵活性,并且坚持使用列表理解,那么您的“尝试0”就不算太远了。但是,您只需要更好地跟踪正在处理的值:

[[0表示范围内(y)]表示范围内的y]表示范围内的y]表示范围内的x]

我真的不确定您所说的示例是什么意思,但这可能会有所帮助

如果在如下列表中定义所需的尺寸:

dims=[
[4, 5],
[5, 6, 2],
]
您可以使用一个非常简单的递归函数:

def make_dims(dims,fill_func=int):
如果isinstance(dims,int):
返回[fill_func()用于范围内的(dims)]
return[在dims中为x设置dims(x,fill\u func)]
l=制造尺寸(尺寸)
要创建具有如下“维度”的列表:

len(l)==len(dims)==2
len(l[0])==len(dims[0])==2
len(l[0][0])==dims[0][0])==4
len(l[0][1])==dims[0][1])==5
len(l[1])==len(dims[1])==3
len(l[1][0])==dims[1][0]==5
len(l[1][1])==dims[1][1]==6
len(l[1][2])==dims[1][2]==2
所有最后一级元素都是
fill\u func()
producer返回的内容


对于您的示例,
second\u dim=[[1,5],[1,5,9]
调用
make\u dim(second\u dim)
只需开箱即用

但是,如果您确定不需要此解决方案提供的更多维度的灵活性,并且坚持使用列表理解,那么您的“尝试0”就不算太远了。但是,您只需要更好地跟踪正在处理的值:

[[0表示范围内(y)]表示范围内的y]表示范围内的y]表示范围内的x]

post expected output您正在创建列表,而不是数组。post expected output您正在创建列表,而不是数组。
second_dim = [1,2]
second_dim[0] = [1,5] 
second_dim[1] = [1,5,9]
list = [ [ [ [ '' for i in range(2) ] for j in range(len(second_dim[i])) ] for k in range(5) ] for l in range(6) ]