Scala - 列表中的Shift元素对

时间:2017-04-07 19:23:01

标签: scala list

我从Scala开始,我想编写一个函数来移动列表中的元素对,如下所示:

  

changePairs(列表(1,2,3,4,5,6,7,8,9,10,11))

     

//> res62:List [Int] = List(2,1,4,3,6,5,8,7,10,9,11)

我考虑过将列表拆分为两个,反转值然后再次加入列表,但我无法反转这些值,我只能设法反转整个列表:

 def changePairs(a: List[Int]) = {
     val listAux = a zip a.tail
     val listAux2 = listAux.reverse
}
  

//> res6:List [(Int,Int)] = List((10,11),(9,10),(8,9),(7,8),(6,7),   (5,6),(4,5),(3,4),(2,3),(1,2))

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

这是使用grouped

执行此操作的唯一方法
list.grouped(2).flatMap(_.reverse).toList