我有一个例子:
let l = [0;1;2]
let l1 = [0;2]
从列表l
中检查l
的某些元素是否属于l1
;如果是,则返回对的列表,例如[(1,0); (1;2)]
答案 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 []