F#列表查找项目索引

时间:2016-09-15 08:40:01

标签: list f# boolean

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:7)

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

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

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