我一直在努力从列表列表中删除重复项,同时保持其余部分和空白列表的原始位置。假设:
list1 = [[1],[2],[1,2],[4],4]]
list2 =[[1],4],[2,4]]
list3 = [[1,2,4]]
然后输出应为:
[[],[],[1]]
[[],[1],4]]
[[],[,],4]]
(删除哪些对并不重要)
但是,只有先平整列表,然后再丢失空白列表的原始位置,我才能使此功能正常工作。如果有人知道如何解决这个问题,我将不胜感激!
代码很杂乱,但适用于平面列表:
remPair [] = []
remPair (x:xs) = if elem x xs then
let
n = elemIndices x xs
(ys,zs) = splitAt (head n) xs
in remPair (ys ++ (drop 1 zs))
else [x] ++ remPair xs