Поделиться через


Модуль Collections.Seq (F#)

Базовые операции над перечислимыми последовательностями.

Пространство имен/путь к модулю: Microsoft.FSharp.Collections

Сборка: FSharp.Core (в FSharp.Core.dll)

module Seq

Заметки

Обзор последовательностей в F# см. в разделе Последовательности (F#).

Значения

Значение

Описание

append : seq<'T> -> seq<'T> -> seq<'T>

Создает оболочку двух указанных перечислений в виде одного объединенного перечисления.

average : seq<^T> -> ^T

Возвращает среднее значение элементов в последовательности.

averageBy : ('T -> ^U) -> seq<'T> -> ^U

Возвращает среднее значение результатов, созданное путем применения функции к каждому элементу последовательности.

cache : seq<'T> -> seq<'T>

Возвращает последовательность, соответствующую кэшированной версии входной последовательности.

cast : IEnumerable -> seq<'T>

Создание оболочки для слабо типизированной последовательности System.Collections в качестве типизированной последовательности.

choose : ('T -> 'U option) -> seq<'T> -> seq<'U>

Применяет заданную функцию к каждому элементу списка. Возвращает список, состоящий из результатов для каждого элемента, где функция возвращает значение Some.

collect : ('T -> 'Collection) -> seq<'T> -> seq<'U>

Применяет данную функцию к каждому элементу последовательности и сцепляет результаты.

compareWith : ('T -> 'T -> int) -> seq<'T> -> seq<'T> -> int

Сравнивает две последовательности, используя заданную функцию сравнения поэлементно.

concat : seq<'Collection> -> seq<'T>

Объединяет заданное перечисление перечислений в одно сцепленное перечисление.

countBy : ('T -> 'Key) -> seq<'T> -> seq<'Key * int>

Применяет функцию создания ключей к каждому элементу последовательности и возвращает полученные уникальные ключи и число их вхождений в первоначальной последовательности.

delay : (unit -> seq<'T>) -> seq<'T>

Возвращает последовательность, полученную из указанной задержанной спецификации последовательности.

distinct : seq<'T> -> seq<'T>

Возвращает последовательность, которая не содержит дублирующихся записей в соответствии с универсальным хэшем и сравнениями на равенство. Если элемент встречается в последовательности несколько раз, последующие вхождения удаляются.

distinctBy : ('T -> 'Key) -> seq<'T> -> seq<'T>

Возвращает последовательность, которая не содержит дублирующихся записей в соответствии с универсальным хэшем и сравнениями ключей на равенство, возвращенными указанной функцией создания ключей. Если элемент встречается в последовательности несколько раз, последующие вхождения удаляются.

empty : seq<'T>

Создает пустую последовательность.

exists : ('T -> bool) -> seq<'T> -> bool

Проверяет, удовлетворяет ли какой-либо элемент последовательности заданному предикату.

exists2 : ('T1 -> 'T2 -> bool) -> seq<'T1> -> seq<'T2> -> bool

Проверяет, удовлетворяет ли какая-либо пара соответствующих элементов входных последовательностей заданному предикату.

filter : ('T -> bool) -> seq<'T> -> seq<'T>

Возвращает новую коллекцию, содержащую только те элементы коллекции, для которых заданный предикат возвращает значение true.

find : ('T -> bool) -> seq<'T> -> 'T

Возвращает первый элемент, для которого заданная функция возвращает значение true.

findIndex : ('T -> bool) -> seq<'T> -> int

Возвращает индекс первого элемента, для которого заданная функция возвращает значение true.

fold : ('State -> 'T -> 'State) -> 'State -> seq<'T> -> 'State

Применяет функцию к каждому элементу коллекции, передавая накапливаемое значение аргумента по потоку в процессе вычисления. Если входная функция — f, а элементы — i0...iN,, эта функция вычисляет f (... (f s i0)...) iN.

forall : ('T -> bool) -> seq<'T> -> bool

Проверяет, все ли элементы последовательности удовлетворяют заданному предикату.

forall2 : ('T1 -> 'T2 -> bool) -> seq<'T1> -> seq<'T2> -> bool

Проверяет, все ли пары элементов, извлеченные из двух последовательностей, удовлетворяют заданному предикату. Если одна последовательность оказывается короче другой, оставшиеся элементы более длинной последовательности игнорируются.

groupBy : ('T -> 'Key) -> seq<'T> -> seq<'Key * seq<'T>>

Применяет функцию создания ключей к каждому элементу последовательности и получает последовательность уникальных ключей. Каждый уникальный ключ также содержит последовательность всех элементов, соответствующих этому ключу.

head : seq<'T> -> 'T

Возвращает первый элемент последовательности.

init : int -> (int -> 'T) -> seq<'T>

Создает новую последовательность, которая при итерации по ней возвращает идущие подряд элементы вплоть до указанного числа путем вызова заданной функции. Результаты вызова функции не сохраняются — при необходимости повторного создания элементов эта функция применяется повторно. Функции передается индекс создаваемого элемента.

initInfinite : (int -> 'T) -> seq<'T>

Создает новую последовательность, при переборе которой будут возвращаться идущие подряд элементы путем вызова заданной функции. Результаты вызова функции не сохраняются — при необходимости повторного создания элементов эта функция будет применяться повторно. Функции передается индекс создаваемого элемента.

isEmpty : seq<'T> -> bool

Проверяет, содержит ли последовательность какие-либо элементы.

iter : ('T -> unit) -> seq<'T> -> unit

Применяет заданную функцию к каждому элементу коллекции.

iter2 : ('T1 -> 'T2 -> unit) -> seq<'T1> -> seq<'T2> -> unit

Применяет заданную функцию к двум коллекциям одновременно. Если одна последовательность оказывается короче другой, оставшиеся элементы более длинной последовательности игнорируются.

iteri : (int -> 'T -> unit) -> seq<'T> -> unit

Применяет заданную функцию к каждому элементу коллекции. Целое число, переданное функции, обозначает индекс элемента.

length : seq<'T> -> int

Возвращает длину последовательности.

map : ('T -> 'U) -> seq<'T> -> seq<'U>

Создает новую коллекцию, элементы которой являются результатом применения заданной функции к каждому элементу коллекции. Заданная функция будет применяться по мере запрашивания элементов с помощью метода MoveNext для перечислителей, извлеченных из объекта.

map2 : ('T1 -> 'T2 -> 'U) -> seq<'T1> -> seq<'T2> -> seq<'U>

Создает новую коллекцию, элементы которой являются результатом применения заданной функции к соответствующим парам элементов двух последовательностей. Если одна входная последовательность оказывается короче другой, оставшиеся элементы более длинной последовательности игнорируются.

mapi : (int -> 'T -> 'U) -> seq<'T> -> seq<'U>

Создает новую коллекцию, элементы которой являются результатом применения заданной функции к каждому элементу коллекции. Целочисленный индекс, переданный функции, указывает индекс (от 0) преобразуемого элемента.

max : seq<'T> -> 'T

Возвращает максимальный элемент последовательности, определенный посредством оператора Operators.max.

maxBy : ('T -> 'U) -> seq<'T> -> 'T

Возвращает максимальный элемент последовательности, определенный посредством применения оператора Operators.max к результату функции.

min : seq<'T> -> 'T

Возвращает минимальный элемент последовательности, определенный посредством оператора Operators.min.

minBy : ('T -> 'U) -> seq<'T> -> 'T

Возвращает минимальный элемент последовательности, определенный посредством применения оператора Operators.min к результату функции.

nth : int -> seq<'T> -> 'T

Вычисляет n-й элемент коллекции.

ofArray : 'T array -> seq<'T>

Обеспечивает просмотр заданного массива в виде последовательности.

ofList : 'T list -> seq<'T>

Просматривает заданный список как последовательность.

pairwise : seq<'T> -> seq<'T * 'T>

Возвращает последовательность каждого элемента и его предшественника во входной последовательности за исключением первого элемента, который возвращается в качестве предшественника второго элемента.

pick : ('T -> 'U option) -> seq<'T> -> 'U

Применяет заданную функцию к идущим подряд элементам, возвращая первое значение, когда функция возвращает значение Some.

readonly : seq<'T> -> seq<'T>

Создает новый объект последовательности, который делегируется данному объекту последовательности. Таким образом гарантируется, что первоначальную последовательность нельзя обнаружить повторно и изменить приведением типов. Например, если задан массив, возвращенная последовательность вернет все элементы массива, но при этом нельзя преобразовать объект последовательности в массив.

reduce : ('T -> 'T -> 'T) -> seq<'T> -> 'T

Применяет функцию к каждому элементу последовательности, передавая накапливаемое значение аргумента по потоку в процессе вычисления. Начните, применив функцию к двум первым элементам. Затем передайте этот результат в функцию вместе с третьим элементом и т. д. Возвращает окончательный результат.

scan : ('State -> 'T -> 'State) -> 'State -> seq<'T> -> seq<'State>

Действует как Seq.fold, но работает по требованию и возвращает последовательность промежуточных и конечных результатов.

singleton : 'T -> seq<'T>

Возвращает последовательность, дающую только один элемент.

skip : int -> seq<'T> -> seq<'T>

Возвращает последовательность, в которой пропущено указанное количество элементов первоначальной последовательности, а затем идут оставшиеся элементы последовательности.

skipWhile : ('T -> bool) -> seq<'T> -> seq<'T>

Возвращает последовательность, которая в ходе ее итерации пропускает элементы базовой последовательности, когда заданный предикат возвращает значение true, а затем выдает оставшиеся элементы последовательности.

sort : seq<'T> -> seq<'T>

Выдает последовательность, упорядоченную по ключам.

sortBy : ('T -> 'Key) -> seq<'T> -> seq<'T>

Применяет функцию создания ключей к каждому элементу последовательности и выдает последовательность, упорядоченную по ключам. Ключи сравниваются с помощью обычного сравнения, реализуемого Operators.compare.

sum : seq<^T> -> ^T

Возвращает сумму элементов в последовательности.

sumBy

Возвращает сумму результатов, созданную путем применения функции к каждому элементу последовательности.

take : int -> seq<'T> -> seq<'T>

Возвращает первые элементы последовательности вплоть до указанного номера.

takeWhile : ('T -> bool) -> seq<'T> -> seq<'T>

Возвращает последовательность, которая в ходе ее итерации выдает элементы базовой последовательности, когда заданный предикат возвращает значение true, и больше не возвращает элементов.

toArray : seq<'T> -> 'T []

Создает массив из заданной коллекции.

toList : seq<'T> -> 'T list

Создает список из заданной коллекции.

truncate : int -> seq<'T> -> seq<'T>

Возвращает последовательность, которая при перечислении возвращает не более чем указанное количество элементов.

tryFind : ('T -> bool) -> seq<'T> -> 'T option

Возвращает первый элемент, для которого заданная функция возвращает значение true, или None, если такого элемента не существует.

tryFindIndex : ('T -> bool) -> seq<'T> -> int option

Возвращает индекс первого элемента последовательности, удовлетворяющего заданному предикату, или значение None, если ни одного такого элемента нет.

tryPick : ('T -> 'U option) -> seq<'T> -> 'U option

Применяет заданную функцию к идущим подряд элементам, возвращая первое значение, когда функция возвращает значение Some.

unfold : ('State -> 'T * 'State option) -> 'State -> seq<'T>

Возвращает последовательность, которая содержит элементы созданные данным вычислением.

windowed : int -> seq<'T> -> seq<'T []>

Возвращает последовательность, выдающую перемещающиеся окна из элементов, содержащихся во входной последовательности. Каждое окно возвращается как новый массив.

zip : seq<'T1> -> seq<'T2> -> seq<'T1 * 'T2>

Объединяет две последовательности в список пар. Две последовательности не обязаны иметь равную длину: при исчерпании одной последовательности оставшиеся в другой элементы игнорируются.

zip3 : seq<'T1> -> seq<'T2> -> seq<'T3> -> seq<'T1 * 'T2 * 'T3>

Объединяет три последовательности в список триад. Последовательности не обязаны иметь равную длину: при исчерпании одной последовательности оставшиеся в других последовательностях элементы игнорируются.

Платформы

Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)

Сведения о версии

Среда выполнения F#

Поддерживается в версиях 2.0, 4.0

Silverlight

Поддерживается в версии 3

См. также

Ссылки

Пространство имен Microsoft.FSharp.Collections (F#)

Последовательности (F#)

Сокращенная форма типа Collections.seq<'T> (F#)