Erlang Thursday - lists:partition/2

今天的Erlang Thursday讲的是 lists:partition/2.

lists:partition/2 接收两个入参,第一个入参是一个断言函数,它将被调用对列表里的每个元素进行处理然后返回一个布尔值。第二个入参是一个将被分隔的列表。

lists:parition/2 返回一个两元素的元组,这个元组的第一个元素是一个列表,这个列表的元素是断言函数返回真值所对应的元素组成;元组第二个元素也是一个列表,它是断言函数返回false所对应的元素组成。

1
2
3
4
5
6
7
8
9
10
lists:partition(fun(X) -> X rem 2 == 1 end, [1, 2, 3, 4, 5, 6, 7]).
% {[1,3,5,7],[2,4,6]}
lists:partition(fun(X) -> X rem 3 == 0 end, [1, 2, 3, 4, 5, 6, 7]).
% {[3,6],[1,2,4,5,7]}
lists:partition(fun erlang:is_atom/1, [a, 1, [b, c], 'B', fun lists:sum/1]).
% {[a,'B'],[1,[b,c],#Fun<lists.sum.1>]}
lists:partition(fun erlang:is_atom/1, [a, 1, {b, [z]}, 'B', fun lists:sum/1]).
% {[a,'B'],[1,{b,[z]},#Fun<lists.sum.1>]}
lists:partition(fun erlang:is_atom/1, []).
% {[],[]}

原文链接: https://www.proctor-it.com/erlang-thursday-lists-partition-2/