如何构建从Erlang中的元组列表中提取的元素列表?

时间:2014-05-13 08:27:07

标签: list erlang

我有一个包含以下元素的列表:{First,Second} 现在我想构建一个包含第一个列表中每个First元素的列表,我该怎么做?

这是否有效:

List = [L || {First, Second} = FirstList, L <- First].

2 个答案:

答案 0 :(得分:4)

你想要这个:

Results = [First || {First, _Second} <- List].

它会创建一个First列表,其中{First, _Second}来自List

我们使用匹配来分解元组。 _Second上的下划线表示我们不使用它(并禁止发出警告)。您可以使用普通的_,但我经常使用较长的格式对文档进行排序。

结果列表由所有First值组成。

你可以在Erlang shell中玩这个东西。要回答您在评论中提出的问题:

1> Players = [{a,1},{b,2},{c,3}].
[{a,1},{b,2},{c,3}]
2> OtherPlayers = [{P,Q} || {P,Q} <- Players, Q =/= 3].
[{a,1},{b,2}]

在这里,我们设置原始列表(我使用原子作为玩家名称,简单整数而不是pids)。然后,我们创建一个新的{P,Q}元组列表,使{P,Q}来自原始列表,并使用Q =/= 3的过滤器。

您可以在Erlang documentationLearn you Some Erlang中详细了解列表推导(和过滤器)。

答案 1 :(得分:0)

试试这个:

[L || {L,R} <- FirstList].