F#向序列中添加一个元素

F#向序列中添加一个元素,f#,F#,一个我找不到答案的简单问题:如何向序列中添加元素?我有一个seq和一个newElem元素,我想附加到它上面 谢谢如下所示: > 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 l

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

谢谢

如下所示:

> 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]
>设x={1..5};;
val x:序号
>设y=Seq.append x[9];;//[9] 是一个单元素列表文本
val y:seq
>y |>顺序toList;;
val-it:int-list=[1;2;3;4;5;9]

还有一个必要的解决方案

> 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 };;
你也可以使用

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

你可以这样做。

应该补充一点,这不是在序列中添加元素,而是在添加额外元素后创建一个新序列?