F# list 查找项目索引

Posted

技术标签:

【中文标题】F# list 查找项目索引【英文标题】:F# list find item index 【发布时间】:2017-01-23 05:06:26 【问题描述】:

所以我有 2 个列表。 1 是一个布尔值列表,另一个是数据列表。 有没有办法为布尔列表中的每个错误值获取索引,然后我可以使用这些索引在我的数据列表中查找值?

【问题讨论】:

【参考方案1】:

如果您的列表长度相同,您可以压缩它们(创建一个包含 (switch * value) 对的新列表,然后过滤该新列表,仅抓取第一个元素中为 false 的那些对。

List.zip booleans values
|> List.filter (fst >> not)
// grab only values
|> List.map snd

【讨论】:

【参考方案2】:

List.choose 函数一次性执行映射和过滤,因此避免创建由 Bartek 的回答创建的中间列表之一:

List.zip booleans values
|> List.choose (function (false, v) -> Some v | _ -> None)

如果只有List.choose2,那么我们也不需要压缩!

【讨论】:

这个实际上对我来说效果更好,因为我可以将 false 更改为 true,这是我意识到我需要为我当前的项目做的事情。

以上是关于F# list 查找项目索引的主要内容,如果未能解决你的问题,请参考以下文章

在c#中使用lambda或linq查找项目索引[关闭]

使用流 API 查找列表中项目的所有索引

如何查找相同项目的列表索引[重复]

在 ArrayList 中查找项目索引的更好方法?

在 C# List 中查找重复项索引的最优雅方法是啥

F# : list.[(argument)..] 匹配模式中的错误