首页 > 解决方案 > 一个列表中有多少元素存在于另一个列表中

问题描述

我似乎无法创建一个将两个列表作为参数并返回两个列表中有多少共同元素的函数。例如 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]

然后我打算使用长度函数来知道有多少项目是共同的。

标签: functionhaskellrecursionfunctional-programming

解决方案


您不想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]

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


推荐阅读