【问题标题】:Haskell - get items that occur only onceHaskell - 获取仅出现一次的项目
【发布时间】:2010-09-28 01:36:22
【问题描述】:

我试图弄清楚如何创建一个仅包含仅出现一次的元素的新列表。我也不能使用递归。

这是更大功能的一小部分。我试图编写一个函数来获取两组的相交。基本上我组合了这些集合。然后排序。然后我想将它与集合 B 结合起来并删除该集合中的所有重复项。除非其他人知道更简单的方法。

我可以使用高阶函数,但我不能使用递归。

谢谢

编辑: 示例:

[1,2,3,3,4,4,5,5] 应该是 [1,2]

【问题讨论】:

    标签: haskell duplicate-removal


    【解决方案1】:

    这个问题之前已经被问过,基本上你只是想通过计算元素的数量将它们组合在一起,然后只提取那些计数为 1 的元素。 (可能使用'filter')

    请看Counting unique elements in a list

    【讨论】:

    • 这个问题被标记为家庭作业,所以他可能比有人为他解决问题更需要提示
    • 如果我可以使用组,你就是个天才。
    • @Daenyth 是的,但是做作业的第一部分是做你的研究。我想表明,也许再花一点时间搜索就能找到答案。
    • @Matt 希望你能,然后希望它有所帮助;更好的是,如果您了解它的工作原理,那对我来说已经足够了。
    • 我在这里搜索过,但找不到任何东西,因为我不想计算独特的元素,而只是收集没有重复的元素。但我什至不知道“组”功能。我确实想出了一种方法来做我需要对组做的事情,只需要看看我现在是否可以使用它。
    【解决方案2】:

    我希望这个提示足够模糊。 :)

    考虑将重复的元素组合在一起。

    【讨论】:

    • 我知道如何压缩然后删除重复项。但我只想要只出现一次的元素。用一个例子编辑了我的问题。
    • 如果现在相邻的元素本身位于较小的内部列表中,您认为会有所帮助吗?
    • 哦,我明白了,我不喜欢尝试帮助 OP 自己想出答案。呸
    • 感谢您的帮助,但我仍会坐在那里摸不着头脑。我不知道haskell中的group函数。
    【解决方案3】:

    想想你将使用什么数据结构来跟踪每件事的出现次数。

    【讨论】:

      【解决方案4】:

      怎么样:

      concat $ filter (null . tail) $ group [1,2,3,3,4,4,5,5]
      

      【讨论】:

        猜你喜欢
        • 2022-06-11
        • 1970-01-01
        • 2014-01-27
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 2023-02-03
        • 1970-01-01
        • 2016-02-14
        相关资源
        最近更新 更多