How can I use map and receive an index as well in Scala?

Geo picture Geo · Feb 6, 2010 · Viewed 60.1k times · Source

Is there any List/Sequence built-in that behaves like map and provides the element's index as well?

Answer

Viktor Klang picture Viktor Klang · Feb 6, 2010

I believe you're looking for zipWithIndex?

scala> val ls = List("Mary", "had", "a", "little", "lamb")
scala> ls.zipWithIndex.foreach{ case (e, i) => println(i+" "+e) }
0 Mary
1 had
2 a
3 little
4 lamb

From: http://www.artima.com/forums/flat.jsp?forum=283&thread=243570

You also have variations like:

for((e,i) <- List("Mary", "had", "a", "little", "lamb").zipWithIndex) println(i+" "+e)

or:

List("Mary", "had", "a", "little", "lamb").zipWithIndex.foreach( (t) => println(t._2+" "+t._1) )