val xs = List(1,2,3,4)
xs zip xs.tail
// res1: List[(Int, Int)] = List((1,2), (2,3), (3,4))
As the docs say, zip
Returns a list formed from this list and another iterable collection
by combining corresponding elements in pairs. If one of the two
collections is longer than the other, its remaining elements are
ignored.
So 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 ignored.
From your example, the tail
of List(1,2,3,4)
is List(2,3,4)
so you can see how these zip together in pairs.