The unzip takes a sequence of tuples, and gives you two lists made from the values in the tuples.
To make this simple to see, we’ll make a list, and then do zipWithIndex:
List("a", "b", "c")
res30: List[String] = List(a, b, c)
List("a", "b", "c").zipWithIndex
res31: List[(String, Int)] = List((a,0), (b,1), (c,2))
The result list has three tuples, with our original list values and the index.
If we just add “unzip”, we’ll get the list data back:
List("a", "b", "c").zipWithIndex.unzip
res32: (List[String], List[Int]) =
(List(a, b, c),List(0, 1, 2))
To get this in a form you’d actually want, you can just un-tuple it, and you’ll get the two lists you wanted originally:
var (ids, indexes) =
List("a", "b", "c").zipWithIndex.unzip
ids: List[String] = List(a, b, c)
indexs: List[Int] = List(0, 1, 2)