如何在scala列表中重复交换元素?

Mah*_*hah 4 scala

我有一个清单

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)


Rah*_*hul 7

关键是在处理组时使用分组:

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)


cur*_*ous 5

滑动也可以使用:

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)