gpt4 book ai didi

recursion - 访问列表列表中的第一个元素 [F#]

转载 作者:行者123 更新时间:2023-12-03 08:08:48 24 4
gpt4 key购买 nike

我目前对 F# 感兴趣,因为它与我以前使用过的所有东西都不同。我需要访问包含在大列表中的每个列表的第一个元素。
如果我假设主列表包含 'x' 个本身包含 5 个元素的列表,那么访问每个第一个元素的最简单方法是什么。

让 listOfLists = [ [1;2;3;4;5]; [6;7;8;9;10]; [11;12;13;14;15]]

我想要的输出是一个包含 [1;6;11] 的新列表

目前我有

let rec firstElements list  =
match list with
| list[head::tail] ->
match head with
| [head::tail] -> 1st @ head then firstElements tail

然后对此进行扩展,我将如何获得所有第二个元素?最好在没有第一个元素的情况下创建新列表(通过使用类似的函数删除它们)然后重用相同的函数?

最佳答案

您可以使用 map 来提取每个子列表的头部元素:

let firstElements li =
match li with [] -> None | h::_ -> Some h

let myfirstElements = List.map firstElements listOfLists

我在 F# 上使用 Ocaml 的语音很少查找,所以这可能不准确,但这个想法适用。

编辑 : 您也可以使用 List.head这使得它更简洁,并将返回 int list而不是 int option list .但是,如果您遇到空列表,它会引发异常。大多数时候,我会避免使用 List.headList.tail在这种情况下。

关于recursion - 访问列表列表中的第一个元素 [F#],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49374385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com