如何在Clojure中迭代集合的元素,以便可以在每次迭代中访问上一个,当前和下一个值。
具有以下 vector :
[1 2 3 4]
我希望每次迭代都可以访问以下值:
[nil 1 2]
[1 2 3]
[2 3 4]
[3 4 nil]
最佳答案
一种方法是在集合之前和之后 concat
设置nil
,并使用步长为1的3个元素对其进行 partition
设置。
(def c [1 2 3 4])
(def your-fn println) ;; to print some output later
(map your-fn
(map vec (partition 3 1 (concat [nil] c [nil]))))
(如果元素是LazySeq而不是 vector ,则也可以删除
map vec
部分,如果可以的话)。哪些打印:
[nil 1 2]
[1 2 3]
[2 3 4]
[3 4 nil]
关于clojure - 如何遍历一个集合并在每次迭代中访问上一个,当前和下一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41924141/