Я далек от эксперта Maxima, но с you asked me to look at this question, вот что я получил после быстрого просмотра documentation.
Во-первых, глядя на documentation on matrices, уступил только один способ превращения матриц в списки, который составляет list_matrix_entries
. Однако это возвращает плоский список записей. Чтобы получить структуру списка вложенных списков, выполните следующие действия:
DataL : [[1, 2], [2, 4], [3, 6], [4, 8]]; /* Using your example list */
DataM : apply('matrix, DataL); /* and matrix */
DataML : makelist(list_matrix_entries(row(DataM, i)), i, 1, 4);
is(DataML = DataL); /* true */
Это неудобно и, вероятно, неэффективно. Используя базовое лисповское структуру Maxima (и аналогию с Mathematica, который я больше знаком с), вы можете проверить глава DataL
и DataM
использование part:
part(DataL, 0); /* [ */
part(DataM, 0); /* matrix */
Тогда для преобразования между этими двумя структурами, вы можете использовать substpart
is(substpart(matrix, DataL, 0) = DataM); /* true */
is(substpart("[", DataM, 0) = DataL); /* true */
Использование substpart
на уровне 0
почти такой же, как с помощью apply
, за исключением того, что работает на более чем просто список.
Спасибо. Кажется, работает :-). –
@Grzegorz Можете ли вы перенести галочку в ответ Роберта, поскольку это, кажется, более разумный способ делать что-то. – Simon
@Simon Справедливая точка - Просто сделал. Однако я не могу вспомнить, почему, потому что я писал более длинный скрипт Maxima, в моем случае ваше решение работало лучше или было более удобным. В любом случае - тик перемещен. Спасибо вам обоим за помощь, Cheers! –