Maxima:生成带有 "multi-dimensional" 下标的名词列表

Maxima: generating a list of nouns with "multi-dimensional" subscripts

我想生成下标名词列表,其中下标为 "multi-dimensional"。

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

[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] 之间的所有索引分配内存,因为我我只使用其中的几个。

(%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]]