Ich versuche, ein Problem zu lösen (für die Praxis), in dem ich eine Funktion schreiben muss, die alle Elemente in einer bestimmten Liste von Listen verkettet. Mit anderen Worten, wenn der Eingang für diese Funktion [[1,2], [3,4]]
ist, dann sollte der Ausgang [1,2,3,4]
sein (Reihenfolge ist nicht wichtig).Verketten Liste von Listen
Ich konnte es erreichen, indem ich den Code unten verwendete, aber ich frage mich, ob es ineffizient ist oder eleganter gemacht werden kann.
%% To achieve this, we use a helper function and an accumulator %%
% Append elements of Src list into Dest list
append_list([], Dest) -> Dest;
append_list([H|T], Dest) -> append_list(T, [H|Dest]).
concatenate_acc([H|T], FinalList) ->
FinalList1 = append_list(H, FinalList),
concatenate_acc(T, FinalList1);
concatenate_acc([], FinalList) -> FinalList.
concatenate(L) -> concatenate_acc(L, []).
Beispielausgabe:
exercises2:concatenate([[1,2], [3,4]]).
[2,1,3,4]
Kommentar Bitte auf diesem!
Machst du das, um diese Funktion zu lernen oder nur irgendwo zu benutzen? Wenn es nur benutzt wird, gibt es 'Listen: concat/1'. – Dogbert
@Dogbert Es ist zum Lernen. Lassen Sie mich das auch zum Text hinzufügen! – dotslash