匹配和删除元组列表中的项目

时间:2010-04-06 22:16:55

标签: list erlang pattern-matching tuples

我有一个元组列表,比如说,

[{x, a, y}, {x, b, y}].

是否有内置函数(或者我可以使用BIF的组合)删除所有匹配{x, _, y}的元组,如基于元组中第一个和第三个项的匹配和删除,忽略第二个?

1 个答案:

答案 0 :(得分:14)

lists:filter/1功能符合您的需要,例如

Ls = [{x,a,y}, {a,b,c}],
F = fun ({x,_,y}) -> false ; (_) -> true end,
lists:filter(F, Ls).

您还可以使用列表推导,它类似于列表的组合:map / 2和lists:filter / 2.

[L || L <- Ls, F(L)]

如果您的谓词相反,那么您只需要匹配{x,_,y}的那些,您可以将其写为如下,因为生成器将过滤掉与模式不匹配的那些。

[L || {x,_,y}=L <- Ls]