List Maxima:生成带有“的名词列表”;多维;下标

List Maxima:生成带有“的名词列表”;多维;下标,list,subscript,maxima,List,Subscript,Maxima,我想生成一个下标为“多维”的下标名词列表 例如,使用以下两个列表作为输入: [1,5,2] [3,5,1] 我想生成以下列表: [a[3,1],a[5,5],a[1,2]] 以下是一个工作示例: (%i1) indexX : [1,5,2]; (%i2) indexY : [3,5,1]; (%i3) makelist(a[i], i, indexX); (%i4) map(endcons, indexY, %); (%o1) [1,5,2] (%o2) [3,5,1] (%o3) [a[

我想生成一个下标为“多维”的下标名词列表

例如,使用以下两个列表作为输入:

[1,5,2]
[3,5,1]
我想生成以下列表:

[a[3,1],a[5,5],a[1,2]]
以下是一个工作示例:

(%i1) indexX : [1,5,2];
(%i2) indexY : [3,5,1];
(%i3) makelist(a[i], i, indexX);
(%i4) map(endcons, indexY, %);

(%o1) [1,5,2]
(%o2) [3,5,1]
(%o3) [a[1],a[5],a[2]]
(%o4) [a[3,1],a[5,5],a[1,2]]
这是可行的,但需要两行代码(调用
makelist()
,然后调用
map()
)。因此它不是很优雅

有没有更好的方法来实现类似的结果


注意:阵列不适合此作业,因为1。索引可以是负数和2。我不想为
[1,1]
[5,5]
之间的所有索引分配内存,因为我只使用了其中的一些索引。

这是一个有趣的解决方案。然而,我有点困惑:一个未编写脚本的名词和一个数组元素之间有区别吗?调用
arraymake()
会生成一个数组还是只生成一个名词?@GLorieul返回一个未赋值的表达式。你也可以考虑OK,所以你的解决方案很适合我。我仍然对maxima所称的数组感到困惑,但我将把它作为一个新的stackoverflow问题发布(这似乎是最合适的做法)。
(%i1) display2d: false $
(%i2) indexX : [1,5,2] $
(%i3) indexY : [3,5,1] $
(%i4) map(lambda([[L]], arraymake('a, L)), indexX, indexY);
(%o4) [a[1,3],a[5,5],a[2,1]]