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

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

【问题讨论】:

    标签: list f# boolean


    【解决方案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,这是我意识到我需要为我当前的项目做的事情。
      猜你喜欢
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2021-04-28
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2010-09-15
      相关资源
      最近更新 更多