2011-10-06 141 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 - 沒有這樣的構造來使用列表解析。 –