根据某些条件将列表拆分为2个或N个子列表

时间:2017-03-26 16:06:55

标签: elixir

我有一个列表或数组。如何根据某些条件将其分解为2个或N个子列表?我在文档中找不到与此相关的任何内容。

1 个答案:

答案 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]}