假设我在Elixir中有一个严格增加整数的列表,我想在数字大于5的倍数时分解为子列表.我正在尝试使用chunk_by但是我得到了这个:
Enum.chunk_by([300, 301, 304, 305, 306, 309, 310, 311, 312, 313, 314,
315, 316, 317, 319, 320], fn(x) -> rem(x, 5) == 0 end)
[
[300],
[301, 304],
[305],
[306, 309],
[310],
[311, 312, 313, 314],
[315],
[316, 317, 319],
[320]
]
Run Code Online (Sandbox Code Playgroud)
当我真正想要的是:
[
[300, 301, 304],
[305, 306, 309],
[310, 311, 312, 313, 314],
[315, 316, 317, 319],
[320]
]
Run Code Online (Sandbox Code Playgroud)
我基本上需要在"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]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |