【发布时间】:2011-02-05 00:50:18
【问题描述】:
我有一个元组列表,比如说,
[{x, a, y}, {x, b, y}].
是否有内置函数(或者我可以使用 BIF 的组合)来删除所有匹配 {x, _, y} 的元组,如根据元组中的第一项和第三项进行匹配和删除,忽略第二项?
【问题讨论】:
标签: list erlang pattern-matching tuples
我有一个元组列表,比如说,
[{x, a, y}, {x, b, y}].
是否有内置函数(或者我可以使用 BIF 的组合)来删除所有匹配 {x, _, y} 的元组,如根据元组中的第一项和第三项进行匹配和删除,忽略第二项?
【问题讨论】:
标签: list erlang pattern-matching tuples
lists:filter/1 函数符合您的需要,例如
Ls = [{x,a,y}, {a,b,c}],
F = fun ({x,_,y}) -> false ; (_) -> true end,
lists:filter(F, Ls).
您还可以使用列表推导式,它类似于 lists:map/2 和 lists:filter/2 的组合。
[L || L <- Ls, F(L)]
如果你的谓词是相反的,因为你只想要那些匹配 {x,_,y} 你可以写如下,因为生成器会过滤掉那些不匹配模式的。
[L || {x,_,y}=L <- Ls]
【讨论】: