在N部分erlang中划分列表

时间:2014-05-12 12:42:34

标签: erlang partitioning

我是erlang的新手,我自己尝试了很多,但无法将列表拆分为N部分。

这是我的清单列表:

L =[ 
    [1, 2, 3, 4, 5], %% Assume L1
    [1, 8, 5, 0, 6], %% Assume L2
    [1, 5, 4, 2, 6], %% Assume L3
    [1, 1, 2, 2, 6], %% Assume L4
    [1, 3, 4, 0, 5], %% Assume L5
    [1, 8, 5, 0, 6], %% Assume L6
    [4, 5, 4, 2, 6], %% Assume L7
    [2, 1, 4, 2, 6], %% Assume L8
    [2, 3, 4, 2, 6]  %% Assume L9
    ...
    [2, 6, 4, 2, 6]  %% Assume Ln
].

并希望将其划分为N个部分,如:

L = [[L1, L2, L3], [L4, L5, L6], [L7, L8, L9],.... [Ln-1, Ln]]

lists:split()只检索一个元素。其中,[Ln-1, Ln]在最后一部分只是两个元素。

1 个答案:

答案 0 :(得分:2)

我来的是这样的:

-module(test).
-compile(export_all).

split([], _) -> [];
split(L, N) when length(L) < N -> [L];
split(L, N) ->
    {A, B} = lists:split(N, L),
    [A | split(B, N)].

它不会合并分组列表的元素,但如果需要,您只需使用lists:merge

即可