删除Erlang中列表中出现的所有值?

时间:2014-05-28 12:42:59

标签: list erlang filtering list-comprehension

我有一个看起来像这样的值列表:

["Some", "random", "values", [], "in", "a", [], "list"].

我想创建一个删除了空列表项的新列表。像这样:

["Some", "random", "values", "in", "a", "list"].

最简单的方法是什么?我假设使用列表推导来构建新列表将是最有效的方法。如何使用列表推导过滤此列表?

2 个答案:

答案 0 :(得分:9)

列表推导是一个更简洁的列表:filter / 2:

[E || E <- List, E /= []]

答案 1 :(得分:3)

这可以使用lists:filter来实现。

List = ["Some", "random", "values", [], "in", "a", [], "list"],
lists:filter(fun(X) -> X /= [] end, List).

lists:filter带来了乐趣和清单。乐趣应该采取列表项并返回true或false。如果乐趣返回true,则会在新列表中返回该项目。

可在此处找到更多信息:http://erlangcentral.org/wiki/index.php?title=Filtering_Lists