mat*_*ieu 1 haskell tuples list-comprehension list
我来自Python和Java背景,所以Haskell对我来说是完全不同的.我正在尝试一些小活动来学习,但我坚持这个.
我有一个有序的元组列表,[(name,studentNumber)],我想过滤这个列表,这样每个学生和每个studentNumber只出现一次.由于元组是有序的,我想保留名称或studentNumber的第一个实例,并删除可能出现的任何其他实例.
我尝试做一个列表comphrenshion,但我不知道如何检查名称或号码是否已添加到列表中.
听起来好像你想要(作为第一个,低效的近似)这样的事情:
import Data.List (nubBy)
import Data.Function (on)
filt = nubBy ((==) `on` snd) . nubBy ((==) `on` fst)
Run Code Online (Sandbox Code Playgroud)
第一次调用nubBy将导致一个列表,其中每个名称只出现一次,然后将传递给第二个,从而产生一个列表,其中每个数字只出现一次.
只需使用nub将产生一个列表,其中每(name,number)对只出现一次; 可能仍然会重复使用不同名称的不同数字和数字的名称.
(当然,使用累加器定制的东西会更快.)
| 归档时间: |
|
| 查看次数: |
921 次 |
| 最近记录: |