【发布时间】:2012-01-09 02:49:24
【问题描述】:
我来自 Python 和 Java 背景,所以 Haskell 对我来说完全不同。我正在尝试一些小活动来学习,但我一直坚持这一点。
我有一个有序的元组列表 [(name, studentNumber)],我想过滤这个列表,以便每个学生和每个 studentNumber 只出现一次。由于元组是有序的,我想保留 name 或 studentNumber 的第一个实例,并删除可能出现的任何其他实例。
我尝试进行列表理解,但我不确定如何检查名称或号码是否已添加到列表中。
【问题讨论】:
-
最简单的解决方案是
nub,但由于它不能依赖于被排序的列表(你的意思是,对吗?列表总是有序的,所以明确说明这一点没有意义),它会(除非我大错特错)不如针对这种情况量身定制的东西有效。 -
如果这是输入,输出应该是什么?
[("Anne", 3), ("Anne", 5), ("Bob", 5)] -
我的意思是这样排序,第一个元组表示他们是第一个注册的学生,第二个元组是第二个学生,依此类推。我需要保留这个订单!
-
@dave4420 它应该输出 [("Anne", 3), ("Bob", 5)]
-
您可能还想看看
Data.Set或Data.Map...
标签: list haskell tuples list-comprehension