如何在F#中连接列表(和其他集合)?

时间:2015-02-17 17:32:31

标签: list f# concatenation

F#是否提供了连接的惯用方法

  • 序列和列表?
  • 列表并列在一起列表? (非破坏性)
  • 列出并列出一个列表,如果它是破坏性的?
  • 可破坏的数组一起破坏性地进入另一个可变数组?

你也可以连接元组吗?

2 个答案:

答案 0 :(得分:15)

  

序列和列表

这没有特殊功能。如果序列是第一个而列表是第二个,那么您必须选择将第一个转换为列表(然后在使用List.append追加时复制它)或使用Seq.append后跟{{1这将复制两个列表。

因此编写自己的函数是有意义的。

  

列出并列在一起列表? (非破坏性)

List.ofSeq这样做。

  

列出并列出一个列表,如果它是破坏性的

列表是不可变的,因此没有破坏性附加。

  

可变阵列破坏性地一起进入另一个可变阵列?

在.NET中,您无法调整数组大小,因此没有破坏性的方法。 List.append创建一个新数组(并且比其他选项更快,因为它事先知道结果的大小)。

  

你也可以连接元组吗?

没有。类型系统不允许您表示将附加元组的函数类型(它们必须具有静态已知大小)。

答案 1 :(得分:1)

@运算符是连接多个列表的简单整洁方式:

let allElements = list1 @ list2 @ list3 @ list4 @ list5 @ list6