listlib
:: insert
Вставьте элемент в список
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
listlib::insert(list
, element
, <function
>)
listlib::insert(list, element)
вставляет element
в list
.
С функциональным listlib::insert
любой элемент может быть вставлен в любой список.
С третьим дополнительным аргументом функция может состоять в том, учитывая, что сравнивают элементы списка с элементом, чтобы вставить, и к тому же определяет положение, элемент вставляется. Заданная функция вызвана двумя элементами и должна возвратить TRUE
, если эти два элемента находятся в правильном порядке, в противном случае FALSE
(см. следующий абзац).
Заданная функция называется шаг за шагом с элементом списка так же первым аргументом и данным элементом как второй аргумент, пока это не возвращает FALSE
. Затем данный элемент вставляется в список перед последним доказанным элементом (см. Пример 2).
Список должен быть упорядочен относительно функции порядка, в противном случае элемент мог быть вставлен в неправильном месте.
Если никакому третьему аргументу не дают, функциональный _less
используется. Если никакой порядок элементов относительно _less
не задан, функция должна быть дана, в противном случае ошибка появляется. Системная функция sysorder
всегда может использоваться.
Вставьте 3
в данный упорядоченный список:
listlib::insert([1, 2, 4, 5, 6], 3)
Вставьте 3
в данный убывающий упорядоченный список. Функция вставки представляет и сохраняет порядок списка:
listlib::insert([6, 5, 4, 2, 1], 3, _not@_less)
Поскольку идентификаторы не могут быть упорядочены _less
, другая функция должна быть дана, например, функция, которая представляет системы внутренний порядок:
listlib::insert([a, b, d, e, f], c, sysorder)
Поскольку никакая функция не дана как третий аргумент, функциональный _less
используется. _less
называется: _less(1, 3)
, _less(2, 3)
, _less(4, 3)
и затем 3
вставляются перед 4
:
listlib::insert([1, 2, 4], 3)
Если списку не упорядочивают право, то положение вставки могло быть неправильным:
listlib::insert([4, 1, 2], 3)
Следующий пример показывает, как выражения могут быть упорядочены определяемым пользователем приоритетом. Это распоряжение дано функцией с именем priority
, который возвращает меньшее число, когда выражение имеет тип с более высоким приоритетом:
priority := X -> contains(["_power", "_mult", "_plus"], type(X)): priority(x^2), priority(x + 2)
Функциональный sortfunc
возвращает TRUE
, если оба данных аргумента находятся в правильном порядке, т.е. первый аргумент имеет более высокое (или равный) приоритет, чем второй аргумент:
sortfunc := (X, Y) -> bool(priority(Y) > priority(X)): sortfunc(x^2, x + 2), sortfunc(x + 2, x*2)
Теперь выражение x*2
вставляется в “правильном” месте в списке:
listlib::insert([x^y, x^2, x*y, -y, x + y], x*2, sortfunc)
|
Список MuPAD® |
|
Выражение MuPAD, чтобы вставить |
|
Функция, которая определяет положение вставки |
Учитывая список, увеличенный со вставленным элементом