你如何将Scala列表变成对?

时间:2012-06-28 16:14:15

标签: scala

我正在尝试将List(1,2,3,4)之类的Scala列表分成对(1,2) (2,3) (3,4),这是一种简单的方法吗?

3 个答案:

答案 0 :(得分:65)

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)压缩List('x,'y,'z) List(('a,'x), ('b,'y), ('c,'z))'d,忽略了第一个tail的{​​{1}}。

在您的示例中,List(1,2,3,4)的{​​{1}}为List(2,3,4),因此您可以看到它们如何成对压缩。

答案 1 :(得分:11)

要生成对((元组)列表,请尝试此

List(1,2,3,4,5).sliding(2).collect{case List(a,b) => (a,b)}.toList

答案 2 :(得分:7)

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))