如何从列表列表中“删除”列表,以及从列表中“删除”元素?

时间:2019-10-25 08:22:25

标签: ocaml

我需要找到一种方法,从给定特定元素的列表列表中删除列表。因此,例如名为“删除x列表”的函数将删除包含x的列表。我正在尝试使用List.filter,但我不知道它是如何工作的。完整的功能是:如果x在列表中,则删除该列表,如果-x在列表中,则从列表中删除元素-x。有任何帮助或指导吗?

2 个答案:

答案 0 :(得分:2)

您可以使用模式匹配

例如,您想从列表中删除一个元素,因此从根本上说,当此元素等于您匹配的解构元素时,您将返回不包含该元素的列表...

您可以使用head函数存储要迭代的列表,并在递归函数中使用此函数的“副本”。

您是否尝试过将-x事物的绝对值使用?您可以在模式匹配中快速检查绝对值

祝你好运!

答案 1 :(得分:-1)

您的意思是这样的吗?

let lst = [[1;2;3;];[4;5;6;];[1;2;3;];[4;5;6];]
let ans = List.filter (fun l -> not(List.exists (fun x -> x = 5) l)) lst

ans是:

[[1; 2; 3]; [1; 2; 3]]