lists:split/2
把一个列表分成两个列表
用法:
split(N, List1) -> {List2, List3}
内部实现:
-spec split(N, List1) -> {List2, List3} when N :: non_neg_integer(), List1 :: [T], List2 :: [T], List3 :: [T], T :: term(). split(N, List) when is_integer(N), N >= 0, is_list(List) -> case split(N, List, []) of {_, _} = Result -> Result; Fault when is_atom(Fault) -> erlang:error(Fault, [N,List]) end; split(N, List) -> erlang:error(badarg, [N,List]). split(0, L, R) -> {lists:reverse(R, []), L}; split(N, [H|T], R) -> split(N-1, T, [H|R]); split(_, [], _) -> badarg.
把列表 List1 以第 N 个元素为分离点,分成 List2 和 List3 这 2 个列表,列表 List2 包含列表 List1 前 N 个元素,列表 List3 则是剩下的。
lists:split(3, [a, b, c, d, e]).