所以我是Erlang的新手,仍然在学习曲线上,所问的一个问题是返回列表中的所有元素,然后是一个相等的元素,我可以。 例如...使用列表解析返回所有元素后跟相等的元素
in_pair_lc([a,a,a,2,b,a,r,r,2,2,b,a]) -> [a,a,r,2]
我当时问使用列表理解做同样的,我打我的心理障碍。 我不成功的尝试是这样的:
in_pair_lc([]) -> [];
in_pair_lc([H|T]) ->
[X || X ,_ [H|T], X=lists:nth(X+1, [H|T]).
虽然在名单提前补偿不看这是行不通的。 感谢您提前提供任何帮助。与列表理解来做到这一点
我想我正确认识这个......你为什么要扭转列出两次?你不能只放下尾巴吗?它会将时间减少2倍。 – 2015-02-11 01:00:01
仅在Erlang中添加['lists:droplast/1'](http://www.erlang.org/doc/man/lists.html#droplast-1)函数/ OTP 17.0,所以旧版本没有它。答案中的代码适用于新旧版本的Erlang/OTP。如果你有17.0或更新,你可以用'[H || {H,H} < - lists:zip(lists:droplast(L),T)]'来替换答案中的整个函数体。 – 2015-02-11 01:16:10
啊,太好了,谢谢你的启发。我刚刚进入Erlang并拥有最新版本。 +1的便携性。 – 2015-02-11 01:17:19