假设我在Elixir中有一个严格增加整数的列表,我想在数字大于5的倍数时分解为子列表。我正在尝试使用chunk_by但是我明白了:
{{1}}
当我真正想要的是:
{{1}}
我基本上需要在“5边界”上分解列表但没有边界本身创建单独的列表。我该怎么做?
答案 0 :(得分:5)
您需要返回div(x, 5)
而不是rem(x, 5) == 0
。只要div(x, 5)
的结果发生变化,就意味着该值应该在新列表中。
iex(1)> Enum.chunk_by(300..320, fn x -> div(x, 5) end)
[
[300, 301, 302, 303, 304],
[305, 306, 307, 308, 309],
[310, 311, 312, 313, 314],
[315, 316, 317, 318, 319],
[320]
]
iex(2)> Enum.chunk_by([200, 201, 204, 207, 220, 226, 228], fn x -> div(x, 5) end)
[[200, 201, 204], [207], [220], [226, 228]]