title: How to Transpose with Zip python...What is the explanation?
body: <p>I just learnt this trick of how to use zip to transpose data from a m-by-n matrix to a n-by-m matrix from the Udacity Intro to Python course. While I get how it works, I am finding it hard to get an explanation of this process. It would be great if someone can help out.</p>
  
  <pre><code>data = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (9, 10, 11))
  data_transpose = tuple(zip(*data))
  print(data_transpose)
  </code></pre>
  
  <p>Outputs:</p>
  
  <pre><code>((0, 3, 6, 9), (1, 4, 7, 10), (2, 5, 8, 11))
  </code></pre>