F#向序列添加元素

时间:2009-07-20 14:20:24

标签: f#

一个简单的问题我找不到答案:如何在序列中添加元素?例如,我有一个seq和一个newElem XElement我想附加它。

由于

3 个答案:

答案 0 :(得分:23)

Seq.append:

> let x = { 1 .. 5 };;

val x : seq<int>

> let y = Seq.append x [9];; // [9] is a single-element list literal

val y : seq<int>

> y |> Seq.toList;;
val it : int list = [1; 2; 3; 4; 5; 9]

答案 1 :(得分:8)

您也可以使用

let newSeq = Seq.append oldSeq (Seq.singleton newElem)

这是对第一个答案的略微修改,但是将序列而不是列表附加到序列中。

给出以下代码

let startSeq = seq {1..100}
let AppendTest = Seq.append startSeq [101] |> List.ofSeq
let AppendTest2 = Seq.append startSeq (Seq.singleton 101) |> List.ofSeq
let AppendTest3 = seq { yield! startSeq; yield 101 } |> List.ofSeq

循环10000次执行运行时间

Elapsed 00:00:00.0001399
Elapsed 00:00:00.0000942
Elapsed 00:00:00.0000821

从中得到你想要的东西。

答案 2 :(得分:5)

还有一个必要的解决方案......

> let x = seq {1..5}
> let y = seq { yield! x; yield 9 }  // Flatten the list,then append your element
> Seq.to_list y;;
val it : int list = [1; 2; 3; 4; 5; 9]

如果底层问题是必然问题,这可能会更好,并且在循环中使用 yield 语句是最自然的。

let mySeq = seq { for i in 1..10 do yield i };;