Lui*_*hys 72
val xs = List(1,2,3,4)
xs zip xs.tail
// res1: List[(Int, Int)] = List((1,2), (2,3), (3,4))
Run Code Online (Sandbox Code Playgroud)
正如文档所说, zip
通过成对组合相应的元素,返回由此列表和另一个可迭代集合形成的列表.如果两个集合中的一个比另一个更长,则忽略其余的元素.
所以List('a,'b,'c,'d)拉链List('x,'y,'z)是List(('a,'x), ('b,'y), ('c,'z))与'd第一个的最后一个被忽略.
从你的例子中,tail的List(1,2,3,4)是List(2,3,4),所以你可以看到这些拉链一起成对.
Jak*_*sky 13
要生成对列表(即元组),请尝试此操作
List(1,2,3,4,5).sliding(2).collect{case List(a,b) => (a,b)}.toList
Run Code Online (Sandbox Code Playgroud)
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))
Run Code Online (Sandbox Code Playgroud)