有啥可以在 Erlang 中执行两个列表的联合吗?

Posted

技术标签:

【中文标题】有啥可以在 Erlang 中执行两个列表的联合吗?【英文标题】:Is there anything to perform union of two lists in Erlang?有什么可以在 Erlang 中执行两个列表的联合吗? 【发布时间】:2021-02-26 18:56:03 【问题描述】:

我发现Erlang中有集合的集合操作,但是我找不到列表的类似操作。我想在 Erlang 的列表中执行基本的联合操作:

A = [1, 2, 3]
B = [1, 2, 5]
C = A union B = [1, 2, 3, 5]

如何在 Erlang 中执行此操作?

不过,我使用集合执行了以下操作,并且它有效。我只是想知道,我是否可以在没有集合的情况下做到这一点。

C = sets:to_list(sets:union(sets:from_list(A),sets:from_list(B))).

【问题讨论】:

【参考方案1】:

ordsets 模块将有序列表作为集合处理,使用与sets 模块相同的 API。 https://erlang.org/doc/man/ordsets.html

【讨论】:

【参考方案2】:

您可以连接两个列表,然后对它们进行排序,删除重复项:

A = [1, 2, 3],
B = [1, 2, 5],
C = lists:usort(A ++ B).

【讨论】:

谢谢,太好了!!

以上是关于有啥可以在 Erlang 中执行两个列表的联合吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Erlang shell 中禁用将小整数打印为字符串的列表吗?

有啥办法可以获取java类中调用方法的列表吗? [复制]

联合查询的select选项和单表查询的select选项有啥区别?

从列表中删除 nil - Erlang

在erlang中列出尾部模式匹配

在 Erlang 中动态添加节点和 global_groups