2011-01-25 1 views
4

私は2リストを持っている:アーランプリント2リスト

List1 = [1,2,3]. 
List2 = ["asd", "sda", "dsa"]. 

は私はターンを以下にこのリストを印刷することができます方法:

1 ASD 2 SDA 3 DSA

ありがとうございました。

+0

このような印刷の理由を述べても害はありません。 –

+0

これには、楽しい引数交換方法があります: '[io:format("〜p "、[X])|| X < - merge(List1、List2)] 'ここで' merge([]、L) - > L;マージ([H | T1]、L2)→[H |マージ(L2、T1)]。(テストされていません)。 –

答えて

5
1> lists:zipwith(fun (X1, X2) -> io:format("~p ~p ", [X1,X2]) end, List1, List2). 
1 "asd" 2 "sda" 3 "dsa" [ok,ok,ok] 
2> 
+0

) – 0xAX

6

場合によっては、ホイールを改造する方がよい場合もあります。 erlangの場合 - 再帰、末尾呼び出し、リストの使い方を理解するだけです。

f([], []) -> 
    ok; 
f([H1|R1], [H2|R2]) -> 
    io:format("~p ~p", [H1, H2]), 
    f(R1, R2). 
+0

@shk:どちらのリストにも同じ数の要素が含まれているので、最初の節の先頭は安全に 'f([]、_)'と書くことができます。ここで '_'は値を無視する "do not care"変数。 –

+0

良い点、ありがとう – keymone

+2

@ Yasir Arsanukaev:それは文脈と期待される機能の厳密さに依存します。より厳密なバージョンでは、時にはいくつかのエラーが発生することがありますf([H1 | R1]、[H2 | R2]) - > io:format( "〜p〜p"、[H1、H2])、 f(R1、R2); f(_、_) - > ok.' –