Записи с меткой «памяти»
Изменение порядка расположения элементов в списке
Изменение порядка расположения элементов в списке
Помимо добавления в список новых данных имеется возможность изменения порядка расположения элементов в списке. Она реализуется следующими операциями:
- 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, из которого удалены все повторяющиеся элементы.
Приведенные ниже примеры иллюстрируют применение функций комбинирования списков.
Объекты и идентификаторы
Объекты и идентификаторы
В общем случае система Mathematica оперирует с объектами. Под ними подразумеваются математические выражения (ехрг), символы (symbols), строки из символов (strings), упомянутые выше числа различного типа, константы, переменные, графические и звуковые объекты и т. д.
Каждый объект характеризуется своим именем — идентификатором. Это имя должно быть уникальным, то есть единственным. Существуют следующие правила задания имен:
- sssss — имя объекта, заданного пользователем;
- Sssss — имя объекта, входящего в ядро системы;
- $Sssss — имя системного объекта.
Итак, все объекты (например функции), включенные в ядро, имеют имена (идентификаторы), начинающиеся с большой буквы (например Plus, Sin или Cos). Идентификаторы относящихся к системе объектов начинаются со знака $. Заданные пользователем объекты следует именовать строчными (малыми) буквами. Разумеется, под символами s…s подразумеваются любые буквы и цифры (но не специальные символы, такие как +, -, * и т. д.).
Объекты (чаще всего это функции), встроенные в систему, принято называть внутренними или встроенными. далее…
Основные классы данных
Основные классы данных
Mathematica оперирует с тремя основными классами данных:
- численными данными, представляющими числа различного вида;
- символьными данными, представляющими символы, тексты и математические выражения (формулы);
- списками — данными в виде множества однотипных или разнотипных данных.
Каждый из этих классов данных в свою очередь имеет ряд специальных, более частных типов данных. На них мы остановимся более подробно.
Численные данные
Двоичные числа, биты и байты
Минимальной единицей информации в компьютерной технике является двоичная единица — бит. Она имеет представление в виде 0 или 1, удобное для реализации простейшими электронными схемами с двумя состояниями электрического равновесия (например, триггерами или иными ячейками памяти). Многоразрядные двоичные числа представляют собой набор цифр 0 и 1, например, 100110 или 111001. Каждый старший разряд относительно предыдущего имеет весовой коэффициент, равный 2.
Именно с битами работает микропроцессор на нижнем уровне операций. Однако бит — слишком мелкая единица, не очень удобная в обращении. К тому же мы привыкли к куда более удобным и наглядным для нас элементам информации, таким как буквы, цифры, знаки арифметических операций, спецзнаки и символы псевдографики. далее…