Удалить номер в списке, который не отображается в другом списке - Haskell - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть два списка чисел.В каждом есть числа [1,2,3,4], но в одном есть дополнительное пятое число, напр.из list2 или замены list2 другой копией list1?

Можно ли это сделать?

Ответы [ 5 ]

8 голосов
/ 17 февраля 2012

Этот вопрос сформулирован немного странно.Если вы хотите изменить один из списков, ответ будет отрицательным: это невозможно.В противном случае вы, конечно, можете просто использовать list1 вместо list2 там, где вам это нужно.

4 голосов
/ 17 февраля 2012

Data.List предоставляет метод intersect, который выглядит именно так, как запрашивается.

3 голосов
/ 17 февраля 2012

Самый простой и эффективный способ добиться того, чтобы list2 был таким же, как list1, это сказать

let list2 = list1 in .......

. Это даже не потребовало бы сопоставления элементов списка.

2 голосов
/ 17 февраля 2012
[ x | x <- list1, x `elem` list2 ]
0 голосов
/ 17 февраля 2012

и вот еще одно, хотя мне больше всего нравится решение Луи_Вассермана

filter (`elem` [1..4]) [1..12]
>>> [1,2,3,4]

или

filter (flip elem [1..4]) [1..12]
>>> [1,2,3,4]
fliter (\x ->x `elem` [1..4]) [1..12]
>>> [1,2,3,4]

если второй список не имеет значения, зачем ты вообще его используешь ?? и еще один пришел мне в голову:

const [1..4] list2
>>> [1,2,3,4]

последний просто игнорирует второй список и заполняет первый.

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