Erlang 如何筛选没有列表2元素的列表1

Erlang 如何筛选没有列表2元素的列表1,erlang,Erlang,基于List1而不使用List2元素创建新列表的最佳方法是什么 List1 = ["Candy", "Brandy", "Sandy", "Lady", "Baby", "Shady"]. List2 = ["Sandy", "Shady", "Candy", "Sandy"]. 新名单的内容应为: List3 = ["Brandy", "Lady", "Baby"]. 目前,最好的方法是使用处理集合的模块,例如: 如果您使用的是Erlang/OTP 22或更高版本(将于2019年6月发布)

基于
List1
而不使用
List2
元素创建新列表的最佳方法是什么

List1 = ["Candy", "Brandy", "Sandy", "Lady", "Baby", "Shady"].
List2 = ["Sandy", "Shady", "Candy", "Sandy"].
新名单的内容应为:

List3 = ["Brandy", "Lady", "Baby"].

目前,最好的方法是使用处理集合的模块,例如:

如果您使用的是Erlang/OTP 22或更高版本(将于2019年6月发布),最好的方法是使用
--
操作符:

> List3 = List1 -- List2.
["Brandy","Lady","Baby"]
从Erlang/OTP 22开始,此操作的运行时复杂度为O(n logn),但在早期的Erlang版本中,此操作的运行时复杂度为O(n*m),因此如果两个列表都很长,它的性能将非常差


见:

12.3谬论:列表减法(“--”运算符)速度慢 列表减法过去的运行时复杂性与其操作数长度的乘积成正比,因此当两个列表都很长时,它的速度非常慢

截至OTP 22,运行时复杂性为“n log n”,即使两个列表都很长,操作也会很快完成。事实上,在使用
ordsets:subtract/2
对两个列表进行减法之前,将它们转换为有序集比常用的解决方法更快,占用的内存更少


目前,最好的方法是使用处理集合的模块,例如:

如果您使用的是Erlang/OTP 22或更高版本(将于2019年6月发布),最好的方法是使用
--
操作符:

> List3 = List1 -- List2.
["Brandy","Lady","Baby"]
从Erlang/OTP 22开始,此操作的运行时复杂度为O(n logn),但在早期的Erlang版本中,此操作的运行时复杂度为O(n*m),因此如果两个列表都很长,它的性能将非常差


见:

12.3谬论:列表减法(“--”运算符)速度慢 列表减法过去的运行时复杂性与其操作数长度的乘积成正比,因此当两个列表都很长时,它的速度非常慢

截至OTP 22,运行时复杂性为“n log n”,即使两个列表都很长,操作也会很快完成。事实上,在使用
ordsets:subtract/2
对两个列表进行减法之前,将它们转换为有序集比常用的解决方法更快,占用的内存更少


两个列表的长度都不会超过5-10个元素。谢谢你的回答。两个列表的长度都不会超过5-10个元素。谢谢你的回答