Сколько элементов из одного списка присутствует в другом списке - PullRequest
0 голосов
/ 24 января 2019

Кажется, я не могу создать функцию, которая принимает два списка в качестве аргументов и возвращает количество элементов, общих в обоих списках. например 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]

Тогда я планировал использовать функцию длины, чтобы узнать, сколько общих элементов есть.

1 Ответ

0 голосов
/ 24 января 2019

Вы не хотите извлекать 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]

Обратите внимание, что порядок, в котором элементы отображаются в результате, зависит от порядка, в котором они отображаются в списке, из которого вы извлекаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...