Sap*_*ppe 6 erlang tuples list pattern-matching
我有一个元组列表,比方说,
[{x, a, y}, {x, b, y}].
Run Code Online (Sandbox Code Playgroud)
是否有内置函数(或者我可以使用BIF的组合)来删除所有匹配的元组{x, _, y},如基于元组中第一个和第三个项的匹配和删除,忽略第二个?
Chr*_*ian 14
该列表:过滤器/ 1功能的需求,如火柴
Ls = [{x,a,y}, {a,b,c}],
F = fun ({x,_,y}) -> false ; (_) -> true end,
lists:filter(F, Ls).
Run Code Online (Sandbox Code Playgroud)
您还可以使用列表推导,它类似于列表的组合:map/2和lists:filter/2.
[L || L <- Ls, F(L)]
Run Code Online (Sandbox Code Playgroud)
如果您的谓词相反,那么您只需要匹配{x,_,y}的那些,您可以将其写为如下,因为生成器将过滤掉与模式不匹配的那些.
[L || {x,_,y}=L <- Ls]
Run Code Online (Sandbox Code Playgroud)