我有一个元组列表,比如说,
[{x, a, y}, {x, b, y}].
是否有内置函数(或者我可以使用BIF的组合)删除所有匹配{x, _, y}
的元组,如基于元组中第一个和第三个项的匹配和删除,忽略第二个?
答案 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]