我有一个清单
val a= List(1,2,3,4,5,6,7)
Run Code Online (Sandbox Code Playgroud)
我想连续交换元素我该怎么做?
期待的是
List(2,1,4,3,6,5,7)
Run Code Online (Sandbox Code Playgroud)
小智 18
scala> List(1,2,3,4,5,6,7).grouped(2).flatMap(_.reverse).toList
res10: List[Int] = List(2, 1, 4, 3, 6, 5, 7)
Run Code Online (Sandbox Code Playgroud)
关键是在处理组时使用分组:
val a= List(1,2,3,4,5,6,7)
a.grouped(2).flatMap{_.reverse}.toList
//res0: List[Int] = List(2, 1, 4, 3, 6, 5, 7)
Run Code Online (Sandbox Code Playgroud)
滑动也可以使用:
scala> List(1,2,3,4,5,6).sliding(2,2).foldLeft(List[Int]()){(r,c) => r :+ c.last :+ c.head }.toList
res0: List[Int] = List(2, 1, 4, 3, 6, 5)
Run Code Online (Sandbox Code Playgroud)
要么
scala> List(1,2,3,4,5,6).sliding(2,2).flatMap(_.reverse).toList
res1: List[Int] = List(2, 1, 4, 3, 6, 5)
Run Code Online (Sandbox Code Playgroud)