Previous: Ведение в работу со списками, Up: Списки [Contents][Index]
Возвращает новый список элементов list_1 с последующими элементами list_2 и т.д.
append
работает и с выражениями общего вида, например, append (f(a,b), f(c,d,e));
дает
f(a,b,c,d,e)
.
См. example(append);
для примера.
Эта функция ищет ключ key в правых частях списка list,
имеющего форму [x,y,z,...]
, где каждый элемент list есть выражение с бинарным
оператором и двумя операндами. Например, x=1
, 2^3
, [a,b]
и т.д.
Ключ key сравнивается с первым операндом.
Если ключ key
найден, то assoc
возвращает второй операнд.
В противном случае возвращается значение default. Параметр default не
обязателен и по умолчанию равен false
.
Возвращает true
если expr является атомарным (т.е. число, имя или строка) и false
в противном случае. Т.е. atom(5)
равно true
, тогда как atom(a[1])
и atom(sin(x))
равны false
(предполагая, что a[1]
и x
не имеют значения).
Возвращает новый список, составленный из первого элемента равного expr с последующими
элементами list. Функция cons
работает и с произвольными выражениями,
например, cons(x, f(a,b,c));
-> f(x,a,b,c)
.
Возвращает копию списка list.
Создает список, вычисляя выражение form с x_1 последовательно равным элементам list_1, x_2 последовательно равным элементам list_2 и т.д. Общее число элементов в результирующем списке равно произведению числа элементов во всех списках. Каждая переменная x_i должна быть символом. Переменные не вычисляются. Списки вычисляются однажды в начале итерации.
(%i1) create_list(x^i,i,[1,3,7]); 3 7 (%o1) [x, x , x ]
Двойная итерация:
(%i1) create_list([i,j],i,[a,b],j,[e,f,h]); (%o1) [[a, e], [a, f], [a, h], [b, e], [b, f], [b, h]]
Вместо списка list_i можно использовать два параметра, которые должны иметь числовые значения. Они будут рассматриваться как нижняя и верхняя границы итерации (включительно).
(%i1) create_list([i,j],i,[1,2,3],j,1,i); (%o1) [[1, 1], [2, 1], [2, 2], [3, 1], [3, 2], [3, 3]]
Отметим, что пределы для переменной j
могут зависеть от i
.
Удаляет все элементы, равные expr_1, из expr_2. При этом expr_1 может быть слагаемым expr_2 (если это сумма) или множителем expr_2 (если это произведение).
(%i1) delete(sin(x), x+sin(x)+y); (%o1) y + x
Вызов delete(expr_1, expr_2, n)
удаляет первые n случаев
expr_1 из expr_2. Если число включений expr_1 в expr_2 меньше n,
то будут удалены все.
(%i1) delete(a, f(a,b,c,d,a)); (%o1) f(b, c, d) (%i2) delete(a, f(a,b,a,c,d,a), 2); (%o2) f(b, c, d, a)
Возвращает восьмой элемент выражения или списка expr.
См. first
по поводу подробностей.
Возвращает новый список, состоящий из элементов list
с последующим expr.
Функция endcons
работает и с общими выражениями, например,
endcons(x, f(a,b,c));
-> f(a,b,c,x)
.
Возвращает пятый элемент выражения или списка expr.
См. first
по поводу подробностей.
Возвращает первый элемент expr, что может быть первым элементом списка,
первой строкой в матрице, первым слагаемым суммы и т.д.
Заметим, что first
и другие подобные функции, такие как rest
и last
,
работают с внешней (печатной) формой выражения expr,
а не с тем, как это выражение было введено.
Если значение inflag
равно true
, то эти функции будут
работать с внутренним представлением выражения expr. Отметим, что упрощатель
изменяет порядок членов в выражениях. Так, first(x+y)
будет равно x
, если inflag
равна true
, и y
, если inflag
равна false
(first(y+x)
даст одинаковый
результат в обоих случаях). Функции second
.. tenth
дают со второго по десятый
элемент выражения.
Возвращает четвертый элемент выражения или списка expr.
См. first
по поводу подробностей.
Возвращает определенное пользователем свойство атома a, обозначенное i, или
false
, если атом не имеет свойства i.
Функция get
вычисляет свои аргументы.
(%i1) put (%e, 'transcendental, 'type); (%o1) transcendental (%i2) put (%pi, 'transcendental, 'type)$ (%i3) put (%i, 'algebraic, 'type)$ (%i4) typeof (expr) := block ([q], if numberp (expr) then return ('algebraic), if not atom (expr) then return (maplist ('typeof, expr)), q: get (expr, 'type), if q=false then errcatch (error(expr,"is not numeric.")) else q)$ (%i5) typeof (2*%e + x*%pi); x is not numeric. (%o5) [[transcendental, []], [algebraic, transcendental]] (%i6) typeof (2*%e + %pi); (%o6) [transcendental, [algebraic, transcendental]]
Возвращает новый список, состоящий из чередующихся элементов списков l и m.
Результат будет иметь вид [l[1], m[1], l[2], m[2], ...]
.
Списки l и m могут иметь элементы любого типа.
Если списки имеют разную длину, то join
отбросит последние элементы более длинного списка.
Ситуация, когда либо l, либо m не является списком, считается ошибкой.
Примеры:
(%i1) L1: [a, sin(b), c!, d - 1]; (%o1) [a, sin(b), c!, d - 1] (%i2) join (L1, [1, 2, 3, 4]); (%o2) [a, 1, sin(b), 2, c!, 3, d - 1, 4] (%i3) join (L1, [aa, bb, cc, dd, ee, ff]); (%o3) [a, aa, sin(b), bb, c!, cc, d - 1, dd]
Возвращает последний элемент expr (элемент, слагаемое, множитель, строку и т.п.).
По умолчанию возвращает число частей внешней (печатной) формы выражения expr.
Для списка – это число элементов, для матрицы – число строк, для суммы – число
слагаемых (см. dispform
).
Результат length
зависит от переключателя inflag
.
Например, length(a/(b*c));
дает 2, если inflag
равен false
(предполагается, что exptdispflag
равна true
), и дает 3, если inflag
равен true
, т.к. внутренние представление есть a*b^-1*c^-1
.
Значение по умолчанию: true
Если равна false
, то все арифметические операции со списками не работают.
Если равна true
, то все операции список-матрица вызывают преобразование списков
в матрицы и дают результат матричного типа. Однако, операции список-список
продолжают давать списки.
Возвращает true
, если expr является списком и false
в противном случае.
Создает и возвращает список, каждый элемент которого построен из выражения expr.
Вызов makelist (expr, i, i_0, i_1)
возвращает список,
с j
-м элементом равным ev (expr, i=j)
для
j
, пробегающего значения от i_0 до i_1.
Вызов makelist (expr, x, list)
возвращает список,
с j
-м элементом равным ev (expr, x=list[j])
для j
, пробегающего значения от 1 до length (list)
.
Примеры:
(%i1) makelist(concat(x,i),i,1,6); (%o1) [x1, x2, x3, x4, x5, x6] (%i2) makelist(x=y,y,[a,b,c]); (%o2) [x = a, x = b, x = c]
Возвращает true
если is(expr_1 = a)
,
для некоторого элемента a из args(expr_2)
,
и false
в противном случае.
Обычно, expr_2
является списком.
В этом случае args(expr_2) = expr_2
и is(expr_1 = a)
для некоторого элемента a из expr_2
.
Функция member
не анализирует составные части аргументов expr_2
,
и может возвратить false
даже если expr_1
является частью какого-либо из
аргументов expr_2
.
См. также elementp
.
Примеры:
(%i1) member (8, [8, 8.0, 8b0]); (%o1) true (%i2) member (8, [8.0, 8b0]); (%o2) false (%i3) member (b, [a, b, c]); (%o3) true (%i4) member (b, [[a, b], [b, c]]); (%o4) false (%i5) member ([b, c], [[a, b], [b, c]]); (%o5) true (%i6) F (1, 1/2, 1/4, 1/8); 1 1 1 (%o6) F(1, -, -, -) 2 4 8 (%i7) member (1/8, %); (%o7) true (%i8) member ("ab", ["aa", "ab", sin(1), a + b]); (%o8) true
Возвращает девятый элемент выражения или списка expr.
См. first
по поводу подробностей.
Возвращает уникальные элементы списка L.
Если все элементы списка L уникальны, то
unique
возвращает копию верхнего уровня
списка L, а не сам список L.
Если L не является списком, то unique
возвращает L.
Пример:
(%i1) unique ([1, %pi, a + b, 2, 1, %e, %pi, a + b, [1]]); (%o1) [1, 2, %e, %pi, [1], b + a]
Возвращает expr без первых n элементов, если n положительно,
или без последних - n
элементов, если n отрицательно.
Если n равен 1, то он может быть опущен.
Выражение expr может быть списком, матрицей или выражением.
Изменяет порядок членов list (но не сами члены) на обратный.
Функция reverse
также работает с выражениями общего вида,
например, reverse(a=b);
дает b=a
.
Возвращает второй элемент выражения или списка expr.
См. first
по поводу подробностей.
Возвращает седьмой элемент выражения или списка expr.
См. first
по поводу подробностей.
Возвращает шестой элемент выражения или списка expr.
См. first
по поводу подробностей.
Возвращает список индексов элементов x
списка L, для которых
предикат maybe(P(x))
возвращает true
,
за исключением элементов unknown
и false
.
Параметр P может быть именем функции или лямбда-выражением.
Параметр L должен быть списком.
Примеры:
(%i1) sublist_indices ('[a, b, b, c, 1, 2, b, 3, b], lambda ([x], x='b)); (%o1) [2, 3, 7, 9] (%i2) sublist_indices ('[a, b, b, c, 1, 2, b, 3, b], symbolp); (%o2) [1, 2, 3, 4, 7, 9] (%i3) sublist_indices ([1 > 0, 1 < 0, 2 < 1, 2 > 1, 2 > 0], identity); (%o3) [1, 4, 5] (%i4) assume (x < -1); (%o4) [x < - 1] (%i5) map (maybe, [x > 0, x < 0, x < -2]); (%o5) [false, true, unknown] (%i6) sublist_indices ([x > 0, x < 0, x < -2], identity); (%o6) [2]
Возвращает десятый элемент выражения или списка expr.
См. first
по поводу подробностей.
Возвращает третий элемент выражения или списка expr.
См. first
по поводу подробностей.
Previous: Ведение в работу со списками, Up: Списки [Contents][Index]