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

时间:2015-04-27 14:03:20

标签: 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],a[5],a[2]]
(%o4) [a[3,1],a[5,5],a[1,2]]

这有效,但它需要两行(调用makelist()然后调用map())。因此它不是很优雅。

有没有更好的方法来获得类似的结果?

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

1 个答案:

答案 0 :(得分:2)

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