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个元素。谢谢你的回答