我有一个列表或数组。如何根据某些条件将其分解为2个或N个子列表?我在文档中找不到与此相关的任何内容。
答案 0 :(得分:3)
Enum.split_with/2根据给定的函数将可枚举分为两个列表:
Enum.split_with([5, 4, 3, 2, 1, 0], fn(x) -> rem(x, 2) == 0 end)
{[4, 2, 0], [5, 3, 1]}
或者在旧版本的Elixir中使用Enum.reduce/3:
Enum.reduce([5, 4, 3, 2, 1, 0], {[], []}, fn(x, {xs, ys}) ->
if rem(x, 2) == 0, do: {[x | xs], ys}, else: {xs, [x | ys]} end)
{[4, 2, 0], [5, 3, 1]}