Генерация списка эрлангов - PullRequest
       5

Генерация списка эрлангов

3 голосов
/ 12 февраля 2011

У меня есть 2 списка:

["asd", "dsa"].

[[123, "asd"], [4534, "fgh"]].

Как мне сгенерировать следующий список: у меня есть список хвостов каждого вложенного списка =: = другой элемент из 1 списка.

В этом примере:

["asd", "dsa"].

[[123, "asd"], [4534, "fgh"]].

"asd" =: = "asd" ->

Список вывода:

[123, "asd"] 

Я пытаюсь:

Здесь S = [[123, "asd"], [4534, "fgh"]]. D = ["asd", "dsa"].

Список = списки: фильтр (веселье (X) -> списки: последний (X) =: = D конец, S),

Но D в этом примере списка, и мне нужен элемент списка.

Как это сделать?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Может быть что-то вроде:

1> [X || X<-[[1,2,4],[7,8,3],[2,5,4],[9,1,6]], Y<-[4,3], lists:last(X)=:=Y].    
[[1,2,4],[7,8,3],[2,5,4]]

Или, используя данные образца:

2> [X || X<-[[123,"asd"], [4534,"fgh"]], Y<-["asd","dsa"], lists:last(X)=:=Y].
[[123,"asd"]]
2 голосов
/ 14 февраля 2011

Немного более прямой способ написания:

lists:filter(fun (X) -> lists:member(lists:last(X), D) end, S).

или со списком:

[ X || X <- S, lists:member(lists:last(X), D) ].

Они немного быстрее, так как они не будут пытаться сопоставить больше элементов в D, если элемент найден. Расширение D в понимании сделает это.

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