Я пытаюсь разбить Scala список как List(1,2,3,4)
на пары (1,2) (2,3) (3,4)
, что это простой способ сделать это?
Как вы превращаете список Scala в пары?
Ответ 1
val xs = List(1,2,3,4)
xs zip xs.tail
// res1: List[(Int, Int)] = List((1,2), (2,3), (3,4))
Как говорят документы, zip
Возвращает список, сформированный из этого списка, и другую итеративную коллекцию путем объединения соответствующих элементов в парах. Если один из двух коллекции больше, чем другие, остальные элементы игнорируются.
Итак, List('a,'b,'c,'d)
с z List('x,'y,'z)
- List(('a,'x), ('b,'y), ('c,'z))
с окончательным 'd
первого игнорируется.
В вашем примере tail
of List(1,2,3,4)
- List(2,3,4)
, чтобы вы могли видеть, как эти zip вместе находятся в парах.
Ответ 2
Чтобы создать список пар (например, кортежи), попробуйте это
List(1,2,3,4,5).sliding(2).collect{case List(a,b) => (a,b)}.toList
Ответ 3
List(1,2,3,4).sliding(2).map(x => (x.head, x.tail.head)).toList
res0: List[(Int, Int)] = List((1,2), (2,3), (3,4))