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>

创建一个空序列。

exactlyOne: seq<'T> -> '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

将给定函数应用于集合的每个元素。 传递到函数的整数指示元素的索引。

last : seq<'T> -> 'T

返回序列中的最后一个元素。

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

计算集合中的第nth 个元素。

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>

返回一个包含由给定计算生成的元素的序列。

如果: ('T -> bool) -> seq<'T> -> seq<'T>

返回一个新集合,其中仅包含给定谓词为其返回 true 的集合的元素。 Seq.filter的同义词。

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 8,Windows 7,Windows server 2012中,Windows server 2008 R2

版本信息

F#核心库版本

支持:2.0,4.0,可移植

请参见

参考

Microsoft.FSharp.Collections 命名空间 (F#)

序列 (F#)

Collections.seq<'T> 类型缩写 (F#)