Изменение порядка расположения элементов в списке
Изменение порядка расположения элементов в списке
Помимо добавления в список новых данных имеется возможность изменения порядка расположения элементов в списке. Она реализуется следующими операциями:
- Flatten [list] — выравнивает (превращает в одномерный) список по всем его уровням;
- Flatten [list, n] — выравнивает список по п его уровням;
- Flatten [list, n, h] — выравнивает выражения с заголовком h no n уровням;
- FlattenAt [list, n] — выравнивает подсписок, если он оказывается п-м элементом списка list. Если n отрицательно, позиция отсчитывается с конца;
- Sort [list] — сортирует элементы списка list в каноническом порядке;
- Sort[list,p] — сортирует согласно функции упорядочения р;
- Reverse [list] — возвращает список с обратным порядком расположения элементов;
- RotateLeft [list] — возвращает список после однократного поворота влево;
- RotateLeft [list, n] — возвращает список после n-кратного поворота влево;
- RotateRight [list] — возвращает список после однократного поворота вправо;
- RotateRight [list, n] — возвращает список после n-кратного поворота вправо;
- Transpose [list] — осуществляет транспозицию (смену строк и столбцов) для двумерного списка;
- Transpose [list, п] — осуществляет транспозицию n-мерного списка. Ниже приведен ряд примеров на использование этих функций.
Ввод (In) |
Вывод (Out) |
13={{1,2,3},{4,5,6},{7,8,9}}; |
{1,2,3,4,5,6,7,8,9} |
Flatten [13] |
|
FlattenAt[13,l] |
{1,2,3,{4,5,6},{7,8,9}} |
Sort[{l,5,3,4,2}] |
{1,2,3,4,5} |
Reverse[{l,2,3,4}] |
{4,3,2,1} |
RotateLeft[ {1,2,3,4,5}, 2] |
{3,4,5,1,2} |
RotateRight[{l,2,3,4,5} ,2] |
{4,5,1,2,3} |
12={{a,b},{c,d}}; |
|
TableForm[12] |
a b c d |
TableFormf Transpose [12] ] |
a c d b |
Изменение порядка расположения элементов в списке полезно при реализации некоторых алгоритмов. К примеру, сортировка списка ускоряет выполнение статистических расчетов и уменьшает их погрешности.
Комбинирование списков и работа с множествами
Иногда возникает необходимость комбинирования нескольких списков. Для этого используются следующие функции:
- Complement [list, listl, list2, …] — возвращает список list с элементами, которые не содержатся ни в одном из списков listl, Iist2, …;
- Intersection [listl, list2,…] (пересечение множеств) —возвращает упорядоченный список элементов, общих для всех списков listi;
- Join[list1, list2,… ] — объединяет списки в единую цепочку (выполняет конкатенацию). Join может применяться к любому множеству выражений, имеющих один заголовок;
- Union [listl, Iist2, …] (объединение множеств) — удаляет повторяющиеся элементы списков и возвращает отсортированный список всех различающихся между собой элементов, принадлежащих любому из данных списков listi. Функция обеспечивает теоретико-множественное объединение списков;
- Union [list] — возвращает отсортированный вариант списка list, из которого удалены все повторяющиеся элементы.
Приведенные ниже примеры иллюстрируют применение функций комбинирования списков.
Ввод (In) |
Вывод (Out) |
|
Complement! {1, 2, 3,4, 5}, {1, а, 2}, {b, с, 5}] |
{3, |
4} |
11={1,2,3,4,5}; |
||
12={а,b,3,4,с}; |
||
Intersection [11 , 12] |
{3, |
4} |
Join [11, 12] |
(1, |
2, 3, 4, 5, a, b, 3, 4, c} |
Union[{l,2,4,3,2,7,3,5}] |
{1, |
2, 3, 4, 5, 7}. |
Union[{3,2},{!,4}] |
(1, |
2, 3, 4} |
Union[{a,b,c,a},{l,d,3}] |
{1, |
3, a, b, c, d} |
Комбинирование списков позволяет создавать сложные структуры данных из более простых структур. Это может быть полезно при построении очередей, деревьев и иных структурных построений. Кроме того, приведенные функции обеспечивают основные операции со множествами. Функцию Union удобно использовать при решении нелинейных и алгебраических уравнений для удаления повторяющихся решений.
Ряд других функций этого урока перечислен в приложении. В целом можно сделать вывод, что обилие функций работы со списками позволяет решать практически любые задачи, в основе которых лежат манипуляции со списками, стеками и другими родственными типами данных.
Операции линейной алгебры
Линейная алгебра — один из фундаментальных разделов математики. Он во многом способствовал развитию методов вычислений. Средства линейной алгебры (преобразование матриц, решение систем линейных уравнений и т. д.) широко используются при решении задач механики, электро- и радиотехники и других отраслей науки и техники. В этом разделе мы познакомимся с основным набором средств системы Mathematica, предназначенных для решения задач линейной алгебры.
Создание массивов
Совокупность данных образует массив (Array). Массивы могут быть одномерными (один список), двумерными и многомерными (два и более списка). Одномерные массивы в математике называют векторами, двумерные — матрицами. В общем случае массив характеризуется размерностью (числом измерений) и размером — произведением числа элементов по всем размерностям. Mathematica позволяет создавать многомерные массивы — число элементов в них ограничено лишь объемом памяти компьютера.
Для задания массивов используются следующие функции:
- Array [ f, n] — генерирует список длиной п с элементами f [ 1 ], f [ 2 ], …, f[n];
- Array [f, {nl, n2, …}] — генерирует массив размером n1x n2 x… в виде вложенных списков с элементами f [ i I, i2,…] (аргумент функции i k меняется от 1 до nk);
- Array[f, dims, origin] — генерирует список с размерностью dims, используя спецификацию индекса origin;
- Array [f, dims, origin, h] — использует заголовок h, а не List, для каждого уровня массива.
Далее приводятся примеры задания массивов и их вывода.
Ввод (In) |
Вывод (Out) |
||||||||||
Y : =Array [Exp , 4 ] |
{e, |
e 2 , |
e 3 , |
e 4 } |
|||||||
N[Y] |
|
|
{2. |
71828, |
7. |
38906, |
20.0855, 54 |
.5982} |
|||
Array[f,{3 |
, |
3}] |
{{f |
[1, |
1], |
f |
[1, 2] |
{ |
f[l, |
3]}, |
{f[2, 1], f[2, 2], |
{[2 |
, 3] |
}, |
{f |
[3, 1] |
{ |
f[3, |
2], f |
[3, 3] }} |
|||
Array [Sin, |
3 |
,0] |
{0, |
Sin |
[1] |
, Sin[2] |
} |
||||
Array [Sin, |
4 |
,l,Plus] |
Sin |
[1] |
+ Sin |
[2] + |
Sin[3] |
+ Sin |
[4] |
||
Array[f ,5, |
2 |
,2] |
2[f |
[2], |
f [ |
3] |
, f[4] |
{ |
f [5] |
, f[6] |
] |