我正在尝试将 Scala 列表List(1,2,3,4)
拆分成对(1,2) (2,3) (3,4)
,有什么简单的方法可以做到这一点?
问问题
15885 次
3 回答
80
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)
zipped with List('x,'y,'z)
is List(('a,'x), ('b,'y), ('c,'z))
with the final 'd
of the first one 忽略。
从您的示例中,tail
您可以看到它们是如何成对压缩在一起的List(1,2,3,4)
。List(2,3,4)
于 2012-06-28T16:45:45.143 回答
16
要生成对列表(即元组),试试这个
List(1,2,3,4,5).sliding(2).collect{case List(a,b) => (a,b)}.toList
于 2012-06-28T16:34:59.613 回答
9
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))
于 2012-06-28T17:01:33.443 回答