想象一个嵌套列表如下。
["A","ABBA","ABABA"]
我想创建一个函数,从该列表中删除单例元素(在本例中为“A”),并删除包含该单例元素的所有列表。
以便:
removeElems ["A","ABBA","CCC"] -> ["CCC"]
以下是我解决此问题的尝试:
badElements nested = concat $ filter (\c -> length c == 1) nested
removeElements nested = [c | c <- nested, u <- badElements nested, not $ any (==u) c]
这会产生奇怪的结果,其中多个生成器“循环”嵌套列表,如下所示:
["A","ABBA","C","BCCB"] --> ["A","A","ABBA","ABBA","C","C","BCCB","BCCB"]--> ["A","ABBA","C","BCCB"]
另一个例子:
[[1],[1,2,3,4],[2],[5,6,7,8]] --> [5,6,7,8]