2
给定一个零和一个向量,我想计算一个值为1的条目数。然而,矢量可能非常长,我只关心矢量是否有零个,一个或多个入口值为1的值。如何计算向量中的个数,给定一个上限
使用给定的方法here,我可以计算向量中的个数。
(count (filter #{1} [1 0 1 0 0 1 1]))
我能否限制过滤器(或使用一些其他的方式),以避免前往载体的任何三个以上的元素,在这种情况下?
给定一个零和一个向量,我想计算一个值为1的条目数。然而,矢量可能非常长,我只关心矢量是否有零个,一个或多个入口值为1的值。如何计算向量中的个数,给定一个上限
使用给定的方法here,我可以计算向量中的个数。
(count (filter #{1} [1 0 1 0 0 1 1]))
我能否限制过滤器(或使用一些其他的方式),以避免前往载体的任何三个以上的元素,在这种情况下?
过滤器是懒惰的,所以只会做尽可能多的工作。既然你只关心有没有1的,一个为1或两个或两个以上的人,你只需要检查可达1的的过滤序列的两个元素,你算所以才take 2
前:
user=> (count (take 2 (filter #{1} [1 0 1 0 0 1 1])))
2
user=> (count (take 2 (filter #{1} [0 0 0 0 0 0 0])))
0
user=> (count (take 2 (filter #{1} [0 0 0 0 0 0 1])))
1
user=> (def rare (repeatedly #(if (< (rand) 0.0001) 1 0)))
#'user/rare
user=> (take 10 rare)
(0 0 0 0 0 0 0 0 0 0)
user=> (count (take 2 (filter #{1} rare)))
2
谢谢!这是有道理的。 –