f#一个列表到另一个?

mam*_*amu 3 f#

我有一个元组列表,元组中有三个值

我想从之前的列表中创建一个新的字符串列表,其中包含元组中的一个值.

List [(string * string * int) ]

List[ for i in columns -> i.getfirstvalueintuple]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?非常基本的问题,但我无法弄清楚.

还有其他方法可以从现有列表中构建另一种列表或seq吗?

Art*_*cto 8

seq { for (first, _, _) in lst do yield first };;
Run Code Online (Sandbox Code Playgroud)

这给出了一个序列.您还可以使用List.map:

lst |> List.map (fun (first, _, _) -> first);;
Run Code Online (Sandbox Code Playgroud)

这给出了一个列表.

  • 请注意,您也可以执行一个`[for(first,_,_)in lst do yield first]`这与seq语法相同但直接给出一个列表 (3认同)
  • 或者更简单地使用一些语法糖:你可以用` - > x`替换单个`do yield x`,如下所示:`[for(first,_,_)in lst - > first]` (2认同)

Rob*_*ert 8

你只需要一个带有'project'功能的List.map:

let newList = List.map (fun (x, _, _) -> x) orgList
Run Code Online (Sandbox Code Playgroud)

List.map接受一个函数和一个列表和功能适用于每个项目在列表中.在(fun (x, _, _) -> x)解包的元组,并返回的第一个项目.

HTH,Rob