list - 元组的haskell列表,具有独特的元组

标签 list haskell tuples list-comprehension

我有 Python 和 Java 背景,所以 Haskell 对我来说很不一样。我正在尝试一些小的事件来学习,但我坚持这一点。

我有一个有序的元组列表 [(name, studentNumber)],我想过滤这个列表,以便每个学生和每个 studentNumber 只出现一次。由于元组是有序的,我想保留名称或学生编号的第一个实例,并删除可能出现的任何其他实例。

我尝试进行列表综合,但我不确定如何检查名称或号码是否已添加到列表中。

最佳答案

这听起来好像你想要(作为第一个低效的近似值)像这样:

import Data.List (nubBy)
import Data.Function (on)

filt = nubBy ((==) `on` snd) . nubBy ((==) `on` fst)

第一次调用 nubBy 将生成一个列表,其中每个名称只出现一次,然后将其传递给第二个,生成一个列表,其中每个数字只出现一次。

只需使用 nub 就会生成一个列表,其中每个 (name,number) 对只出现一次;可能仍然存在重复的名称与不同的数字和数字与不同的名称。

(当然,使用累加器定制的东西会更快。)

关于list - 元组的haskell列表,具有独特的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316266/

相关文章:

Python按开始和结束字符拆分字符串

python - 包含列表的字典列表

java - Java中不可修改的列表

haskell - "purely applicative Either"是否有标准名称或实现?

python - 通过相同的元组项将元组列表拆分为多个列表

c++ - 我无法直接将模板函数传递给 std::apply 但我可以通过 lambda

r - 如何从R中的字符串列表中删除元素

Haskell 使用 Parsec 进行解析

string - 在 Haskell 中将 Data.Text 转换为 Int

typescript - 在 typescript 中将字典/对象键作为元组获取