首页 文章

从OCaml中的列表列表中提取值

提问于
浏览
2

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

3 回答

  • 2

    你总是可以连续做两个模式匹配

    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或许多其他列表操作函数之一,具体取决于您实际尝试的操作 .

  • 0

    我不想说你要提取 int list list 中的所有整数并且不想用多个级别编写模式匹配,你可以先使用 List.flatten 函数来获取 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 *)
    
  • 4

    如果您将列表列表视为矩阵,并且您拥有所需的行列

    List.nth col (List.nth ln matrix)

    List.nth 在这种情况下很好用,你得到的信息我认为这就是你想要的

相关问题