检查列表

时间:2015-04-29 14:40:04

标签: ocaml

我有一个例子:

let l  = [0;1;2]
let l1 = [0;2]

从列表l中检查l的某些元素是否属于l1;如果是,则返回对的列表,例如[(1,0); (1;2)]

1 个答案:

答案 0 :(得分:1)

为此,您应该遍历l中的每个元素。然后检查l的第一个元素是否是l1的元素。如果是,则过滤掉所有相等的元素。然后获取相等元素列表的长度,这将是元组中将进入返回列表的第一个字符。

let check_list l l1 =
  let rec check l l1 combined = 
    match l with
    |[] -> combined
    |(h::t) -> if (List.mem h l1) then 
        check t l1 ((List.length(List.filter (fun x -> h=x) l1),h)::combined)
            else check t l1 combined
in check l l1 []
相关问题