Вот еще один способ использования grouped
для захвата всех остальных элементов списка, начиная с 1-го элемента:
def everyOther[A](list: List[A]): List[A] =
list.grouped(2).map(_.head).toList
everyOther(List(1, 2, 3, 4, 5))
// res1: List[Int] = List(1, 3, 5)
Чтобы захватить все остальные элементы, начиная со 2-го элемента, либо замените список на tail
:
def everyOther2[A](list: List[A]): List[A] =
list.tail.grouped(2).map(_.head).toList
или замените map
на collect
частичной функцией case/match
:
def everyOther2[A](list: List[A]): List[A] =
list.grouped(2).collect{ case List(_, x) => x }.toList