Haskell 检查一个子列表中的所有元素是否与另一个子列表中的元素相等
因此,我想使用nubBy删除列表列表中的所有重复项。在本例中[1,2,3]==[1,3,2]=[2,3,1]等等,所以我想我需要使用all和elem来询问是否所有元素都是另一个列表的元素,但我正在努力解决语法问题 说清楚一点,我有一个例子Haskell 检查一个子列表中的所有元素是否与另一个子列表中的元素相等,haskell,Haskell,因此,我想使用nubBy删除列表列表中的所有重复项。在本例中[1,2,3]==[1,3,2]=[2,3,1]等等,所以我想我需要使用all和elem来询问是否所有元素都是另一个列表的元素,但我正在努力解决语法问题 说清楚一点,我有一个例子 [[1,2],[2,3],[4,5],[2,1],[2,3]] 我想删除重复项以获得输出 [[1,2],[2,3],[4,5]] 如果您不关心结果内部列表中元素的顺序是否与原始列表中的一个匹配,那么可以在使用nub之前使用map sort对它们进行排序。否
[[1,2],[2,3],[4,5],[2,1],[2,3]]
我想删除重复项以获得输出
[[1,2],[2,3],[4,5]]
如果您不关心结果内部列表中元素的顺序是否与原始列表中的一个匹配,那么可以在使用nub之前使用map sort对它们进行排序。否则,nubBy==`on`sort将完成这项工作,但需要为每次比较对内部列表进行排序。如果您不关心结果内部列表中元素的顺序是否与原始列表中的一个匹配,则可以在使用nub之前使用map sort对其进行排序。否则,nubBy==`on`sort将完成这项工作,但需要为每次比较对内部列表进行排序。这里,通过昂贵的二进制操作对nubBy进行排序的标准方法是修饰过程取消修饰习惯用法,也称为:
在这里,通过昂贵的二进制操作进行nubBy排序的标准方法是装饰过程取消装饰习惯用法,也称为:
谢谢,虽然你的第一句话对我来说没有意义。@npfedwards:我的意思是,如果你有[[3,2,1],[2,1,3],[1,2,3],[1,2,3],[1,2,3]在原始列表中没有按顺序出现,那么结果是否为[[1,2,3]?没有关系。我只需要去掉重复的。地图排序会有多贵?@npfedwards:与nub相比会相对便宜。要改进这一点,可以使用nubOrd=map head。组在对内部列表进行排序后,对外部列表进行排序。此外,考虑使用数据。SET或DATA ItStand而不是列表。@ HAMAR:他不理解你的第一句话的原因是因为你无意中一个词,使它语法上毫无意义。谢谢,虽然你的第一句话对我来说没有意义。@npfedwards:我的意思是,如果你有[[3,2,1],[2,1,3],[1,2,3],[1,2,3],[1,2,3]在原始列表中没有按顺序出现,那么结果是否为[[1,2,3]?没有关系。我只需要去掉重复的。地图排序会有多贵?@npfedwards:与nub相比会相对便宜。要改进这一点,可以使用nubOrd=map head。组在对内部列表进行排序后,对外部列表进行排序。此外,考虑使用数据。SET或DATA ItStand而不是列表。@ HAMAR:他不理解你的第一句话的原因是因为你无意中一个词,使它语法上毫无意义。
import Data.List
import Data.Function
g xs = map snd . nubBy ((==)`on`fst) $ [ (sort ys,ys) | ys <- xs]