我正在寻找一种方法,可以让我在Elixir的列表上创建一个滑动窗口,如下所示:
return t+= for i, (a,b) in enumerate(zip(val1,val2))
种类的[1,2,3,4,5,6]
|> Enum.magic_function(2)
--> [[1,2],[2,3],[3,4],[4,5],[5,6]]
函数,但每次移位1。
答案 0 :(得分:4)
您可以使用Enum.chunk_every/4
的第三个参数来指定每个块之后要跳过多少个元素(您想在此处使用1
),而第四个则告诉它如果最后一个块较小则放弃最后一个块超过指定的长度。
iex(1)> [1, 2, 3, 4, 5, 6] |> Enum.chunk_every(2, 1, :discard)
[[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]