如何从旧序列中获取新序列,新序列的元素来自旧序列,直到满足条件
假设条件为#(>%0)
'(1 2 3 0 3 2 0 1)返回1,2,3
'(0 1 2 3)返回空seq
'(1 2 3)返回所有内容。
请注意,它与过滤器不同。
答案 0 :(得分:6)
您可能想要使用take-while:
(take-while #(> % 0) '(1 2 3 0 3 2 0 1))
=> (1 2 3)
答案 1 :(得分:3)
split-with
。
=> (split-with #(> % 0) '(1 2 3 0 3 2 0 1))
[(1 2 3) (0 3 2 0 1)]
答案 2 :(得分:2)
这是Clojure的喜悦:有很多方法可以给猫皮肤涂抹:
(for [i '(1 2 3 0 3 2 0 1) :while (> i 0)] i)
=> (1 2 3)