我有一個列表列表,例如, [[1,1,3],[1,2,4],[4,4,4],[5,6,7]]
基於過濾器輸出的過濾器
我想刪除所有具有重複元素的列表,例如返回[[1,2,4],[5,6,7]]
我目前的問題是爲我的應用程序filter
創建一個謂詞。 我目前正在嘗試根據該列表的預期長度測試已過濾列表的長度。但是,我努力讓它在list
的元素上起作用。
removeLoops :: [[Integer]] -> Integer -> [[Integer]]
removeLoops list vs = filter (genericLength(filter (==)) < vs) list
我吠叫錯了樹嗎?或者只是對謂詞的誤解?
我真的不明白你在這裏做什麼。您有重複的條件是刪除重複項後列表的長度是否減少?請注意'filter(==)'不會刪除重複項。有一個函數'nub'。雖然檢查一個列表是否有重複,但更容易刪除它們。你不應該用後者來做前者,以提高效率。 –
子列表是否總是排序?如果是這樣,您可以使用'hasDups xs =或$ zipWith(==)xs(tail xs)'檢查重複項。 – hammar