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