title: Can I zip more than two lists together in Scala?
body: <p>Given the following Scala List:</p>
  
  <pre><code>val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3"))
  </code></pre>
  
  <p>How can I get:</p>
  
  <pre><code>List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3"))
  </code></pre>
  
  <p>Since zip can only be used to combine two Lists, I think you would need to iterate/reduce the main List somehow. Not surprisingly, the following doesn't work:</p>
  
  <pre><code>scala&gt; l reduceLeft ((a, b) =&gt; a zip b)
  &lt;console&gt;:6: error: type mismatch;
   found   : List[(String, String)]
   required: List[String]
         l reduceLeft ((a, b) =&gt; a zip b)
  </code></pre>
  
  <p>Any suggestions one how to do this? I think I'm missing a very simple way to do it.</p>
  
  <p><strong>Update:</strong> I'm looking for a solution that can take a List of N Lists with M elements each and create a List of M TupleNs.</p>
  
  <p><strong>Update 2:</strong> As it turns out it is better for my specific use-case to have a list of lists, rather than a list of tuples, so I am accepting pumpkin's response. It is also the simplest, as it uses a native method.</p>