【问题标题】:Removing duplicates tuples in a list in Haskell删除 Haskell 列表中的重复元组
【发布时间】:2014-10-27 21:25:26
【问题描述】:

我不知道如何从元组列表中删除所有重复项 例如 [(1,2),(2,1),(5,2),(5,6)]

这里的副本是 (2,1)(与顺序无关)。我只想删除其中一个重复项,我该怎么做?

symEq :: Eq a => (a,a) -> (a,a) -> Bool
symEq (x,y) (u,v) = (x == u && y == v) || (x == v && y == u)

removeDuplTuples :: Eq a => [(a,a)] -> [(a,a)]
removeDuplTuples = nubBy symEq

这是我阅读的一些代码,但我认为它并不完全相关

【问题讨论】:

  • 在这种情况下,我希望 (2,1) 重复
  • 你试过运行那个代码吗?
  • 是的,它返回一个错误,说 nubBy 是一个未定义的变量
  • nubBy在Data.List包中,需要导入才能使用。
  • @ThreeFx 为什么这么快?

标签: list haskell duplicates tuples


【解决方案1】:

您发布的代码完全相关,正是您想要的......

让我们一步一步来:

symEq 接受两个元组并检查第一个和最后一个元素是否相等,或者彼此对面的元素是否相等。

nubBy 只是 nub 使用自定义函数而不是 (==)

nubByData.List包里,只要在文件开头加上import Data.List就可以使用了。

【讨论】:

  • 我试过这样做,但由于某种原因导入出错
  • @Sprout 试试import Data.List (nubBy)
猜你喜欢
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
  • 2018-10-17
  • 2018-12-25
  • 2017-04-22
相关资源
最近更新 更多