所以我有一个0和1的列表,我想找到每个元素的计数并将其输出到列表中.我可以想到用函数执行它的递归方法,但有没有任何帮助函数可以帮助转换它?
我相信groupBy可能很有用,但它似乎将所有元素组合成一个或另一个分区,而不是我想要的方式.
我希望有一个数字计数列表,直到每次从0到1和1到0的转换.即,如果我们有0,0,0,..确定我们计算3个零,所以记住3,然后我们有1, 1,1,1所以我们算了4个1,所以我们记得4个,到目前为止我们有一个[3,4 ...]列表等等
Yann Moisan解决方案的尾部版本:
def pack[A](ls: Seq[A], prev: Seq[Int] = Seq.empty): Seq[Int] = { if (ls.isEmpty) prev else { val (packed, next) = ls span {_ == ls.head } pack(next, prev :+ packed.size) } }