Clojure序列操作

时间:2012-03-23 05:39:27

标签: clojure

如何从旧序列中获取新序列,新序列的元素来自旧序列,直到满足条件

假设条件为#(>%0)

'(1 2 3 0 3 2 0 1)返回1,2,3

'(0 1 2 3)返回空seq

'(1 2 3)返回所有内容。

请注意,它与过滤器不同。

3 个答案:

答案 0 :(得分:6)

您可能想要使用take-while

(take-while #(> % 0) '(1 2 3 0 3 2 0 1))
=> (1 2 3)

答案 1 :(得分:3)

mikera的答案看起来不错,但如果您需要对列表的其余部分进行进一步处理,还要考虑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)