一个列表中有多少个元素存在于另一个列表中

时间:2019-01-24 19:02:32

标签: function haskell recursion functional-programming

我似乎无法创建一个将两个列表作为参数并返回两个列表中共有多少个元素的函数。 例如f [1、2、4、2] [2、3、4、4]返回2(忽略重复)。 有什么建议么?我尝试过了

*Main> a = [1, 2, 3]
*Main> b = [2, 3, 4]
*Main> [x | x <- a, x <- b]
[2,3,4,2,3,4,2,3,4]

然后我打算使用length函数来知道共有多少个项目。

1 个答案:

答案 0 :(得分:2)

您不想从两个列表中提取一个x;从一个列表中提取,然后检查另一个列表中是否存在。

> a = [1,2,3]
> b = [4,3,2]
> [x | x <- a, x `elem` b]
[2,3]
> [x | x <- b, x `elem` a]
[3,2]

请注意,项目在结果中出现的顺序取决于您从中提取的列表中项目的出现顺序。