【问题标题】:Extract Value from list of lists in OCaml从 OCaml 中的列表列表中提取值
【发布时间】:2015-05-16 04:49:37
【问题描述】:

假设我有一个包含和 int* 列表的列表 我如何能够从这种类型的列表中提取 int 的值?您可以对列表的头部或尾部进行模式匹配,但您将如何提取 int?

【问题讨论】:

  • 你怎么知道你要提取哪个int?如果您提供输入和所需输出的示例,将会有所帮助。

标签: ocaml


【解决方案1】:

您总是可以连续进行两个模式匹配

match [[1;2]; [3;4]] with
  | (firstrow::_) -> (
      match firstrow with ->
        | (x :: _) -> x
        | []       -> 0 )
  | _ -> 42

编写多层次的模式匹配也是可以的。

match [[1;2]; [3;4]] with
   | (x::_)::_  -> x
   | ([]::_)    -> 0
   |  _         -> 42

也就是说,您不一定需要使用模式匹配来访问列表元素。您还可以使用 List.map 或许多其他列表操作函数之一,具体取决于您实际尝试执行的操作。

【讨论】:

    【解决方案2】:

    我不明白您要准确提取哪个值,假设您要提取 int list list 中的所有整数并且不想编写具有多个级别的模式匹配,您可以先使用 @ 987654322@ 函数获取int list 然后做任何你想做的事:

    let l = List.flatten [[1; 2]; [3; 4]] in    (* l = [1; 2; 3; 4] *)
    List.iter print_int l                       (* iter, map or any other function *)
    

    【讨论】:

      【解决方案3】:

      如果你认为你的列表是一个矩阵并且你有你想要的行列

      List.nth col (List.nth ln matrix)

      List.nth 在这种情况下很适合使用,根据你给我的信息,我认为这就是你想要的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-24
        • 2021-02-21
        • 1970-01-01
        • 2021-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多