2011-10-06 102 views
-2

要合并[1,3,4],[2,5] - > [1,2,3,4,5]和zip [1,2,3],[4 ,5] - > [{1,4},{2,5}]。它不是作业,我只是想提高我的列表理解能力。如果你知道任何与它相关的技巧,不要犹豫提交。合并与列表理解Zip合并

+0

在列表请看:对于第一个问题合并/ 1。请参阅下面的答案。没有一个可以通过列表解析来解决。 –

回答

3
1> [1,3,4] ++ [2,5]. 
[1,3,4,2,5] 
2> lists:zip([1,2],[4,5]). 
[{1,4},{2,5}] 

对于拉链,你也可以写你自己:

% zip.erl 
-module(zip). 
-export([zip/2]). 

zip(A, B) -> 
    zip(A, B, []). 

zip(_, [], Result) -> 
    Result; 

zip([], _, Result) -> 
    Result; 

zip([A|ARest], [B|BRest], Result) -> 
    zip(ARest, BRest, [{A, B}|Result]). 

结果:

8> c(zip). 
{ok,zip} 
9> zip:zip([1,2,3],[4,5]). 
[{2,5},{1,4}] 
+0

我的意思是列表理解方法,你知道 - [X || X < - L,...] – Yola

+0

首先有一个技巧,它是合并排序的一部分,所以结果数组必须排序。 – Yola

+2

@Yola - 没有这样的构造来使用列表解析。 –