> Erlang中文手册 > flatlength/1 获取一个多层嵌套列表的长度

lists:flatlength/1

获取一个多层嵌套列表的长度

用法:

flatlength(DeepList) -> int()

内部实现:

 %% flatlength(List)
%%  Calculate the length of a list of lists.

-spec flatlength(DeepList) -> non_neg_integer() when
      DeepList :: [term() | DeepList].

flatlength(List) ->
    flatlength(List, 0).

flatlength([H|T], L) when is_list(H) ->
    flatlength(H, flatlength(T, L));
flatlength([_|T], L) ->
    flatlength(T, L + 1);
flatlength([], L) -> L.

获取一个多层嵌套列表的长度,即该嵌套列表里的非列表元素的个数,等同于调用 length(flatten(DeepList))

lists:flatlength([[1], [2], 3, [4, [5, 6, [7, 8]]]]).