Последовательности
Последовательности
Последовательность - это набор данных, которые можно перебрать один за другим в некотором порядке. К разновидностям последовательностей относятся одномерные динамические массивы array of T, списки List<T>, двусвязные списки LinkedList<T>, множества HashSet<T> и SortedSet<T>.
Тип последовательности конструируется следующим образом:
sequence of тип элементов
Последовательности доступны только на чтение. Если требуется изменить последовательность, то генерируется и возвращается новая последовательность.
Тип sequence of T является синонимом типа .NET System.Collections.Generic.IEnumerable<T>, а последовательность - синонимом объекта типа, поддерживающего интерфейс System.Collections.Generic.IEnumerable<T>.
Инициализация последовательности
Последовательность инициализируется с помощью стандартных функций Seq, SeqGen, SeqFill, SeqWhile, SeqRandom, SeqRandomReal, ReadSeqInteger, ReadSeqReal, ReadSeqString. Например:
var s: sequence of integer;
s := Seq(1,3,5);
s.Println;
s := SeqGen(1,x->x*2,10);
writeln(s);
Хранение последовательности
Последовательность не хранится целиком в памяти. Элементы последовательности генерируются алгоритмически и возвращаются по одному при обходе.
Таким образом, в коде
var s := SeqFill(1,10000000);
writeln(s.Sum());
основное время выполнения будет занимать вторая строка, а выполнение первой строки будет сводиться лишь к запоминанию алгоритма генерации последовательности в переменной s.
Соединение последовательностей
Две последовательности одного типа могут быть соединены операцией +, при этом вторая последовательность дописывается в конец первой. Например:
Seq(1,2,3) + Seq(5,6,7)
Seq(1,2,3) + Arr(5,6,7)
Кроме того, к последовательности некоторого типа можно присоединить операцией + значение этого типа как первый или последний элемент последовательности, например:
Seq(1,2,3) + 5
3 + Seq(5,6,7)
3 + Seq(5,6,7) + 9
Операция + является сокращённым вариантом операции Concat.
Цикл по последовательности
Элементы последовательности можно обойти с помощью цикла foreach:
foreach var x in s do
if x>2 then
Print(x);
Совместимость по присваиванию
Переменной типа последовательность с элементами типа T можно присвоить одномерный массив array of T, список List<T>, двусвязный список LinkedList<T>, множество HashSet<T> или SortedSet<T>, а также объект любого класса, поддерживающего интерфейс System.Collections.Generic.IEnumerable<T>.
Стандартные функции и методы
Для последовательностей доступны многочисленные методы обработки последовательностей.
Для последовательностей доступны также стандартные функции обработки последовательностей.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
21.3.2. Управляющие последовательности
21.3.2. Управляющие последовательности Существуют несколько отдельных типов управляющих последовательностей. Самый простой тип представляет собой символ перехода (^[), за которым следует один командный символ. (Несмотря на то что символ перехода отображается в строках С
21.3.4. Составные управляющие последовательности
21.3.4. Составные управляющие последовательности Пять двухсимвольных управляющих последовательностей (которые показаны в табл. 21.3) фактически являются префиксами более длинных и сложных последовательностей. Рассмотрим каждую из них по очереди.Таблица 21.3. Составные
Перемещение клипов в последовательности
Перемещение клипов в последовательности В процессе создания фильма может понадобиться переместить клип в последовательности, например, если вы изначально неправильно расположили клипы или решили изменить сценарий фильма.Существует несколько способов изменения
Сортировка в убывающей последовательности
Сортировка в убывающей последовательности Для сортировки в убывающей последовательности задайте ключевое слово после имени поля, по которому проводится сортировка. Например, если нужно отобрать из таблицы tblOrder записи так, чтобы сначала располагались самые последние
2.33. Генерирование последовательности строк
2.33. Генерирование последовательности строк Изредка бывает необходимо получить «следующую» строку. Так, следующей для строки "aaa" будет строка "aab" (затем "aac", "aad" и так далее). В Ruby для этой цели есть метод succ:droid = "R2D2"improved = droid.succ # "R2D3"pill = "Vitamin B"pill2 = pill.succ # "Vitamin C"He
7.9. Преобразование элементов последовательности
7.9. Преобразование элементов последовательности ПроблемаИмеется последовательность элементов, и с каждым элементом требуется выполнить какие-либо действия — либо на месте, либо скопировав их в другую последовательность.РешениеИспользуйте стандартные алгоритмы transform
Числовые последовательности
Числовые последовательности Вот две известные в информатике головоломки. Сожалею, что обманываю ожидания своих коллег, которые не найдут здесь ничего нового…?* Головоломка 5. Последовательность Хэмминга.Рассмотрим числа, не имеющие других простых делителей, кроме 2, 3 и 5.
Управляющие последовательности
Управляющие последовательности Как и в других языках, подобных C, строковые литералы в C# могут содержать различные управляющие последовательности, которые интерпретируются как определенный набор данных, предназначенных для отправки в выходной поток. Каждая
Последовательности (Sequences)
Последовательности (Sequences) Последовательность - это вид контейнера, который организует конечное множество объектов одного и того же типа в строгом линейном порядке. Библиотека обеспечивает три основных вида последовательных контейнеров: vector (вектор), list (список) и deque
Последовательности команд
Последовательности команд Часто для выполнения определенного действия пользователь должен по очереди раскрывать несколько пунктов меню. Например, чтобы запустить в Windows Vista программу Блокнот, нужно выполнить следующие действия.1. Нажать кнопку Пуск.2. Выбрать пункт Все