title: Explanation on unpacking a list with itertools.product
body: <p>I cant seem to wrap my head around how unpacking (*) along with itertools.product() is working with the example below.</p>
  
  <pre><code>for x in product(["ghi","abc"]):
      print(x)
  </code></pre>
  
  <p>output:</p>
  
  <pre><code>('ghi',)
  ('abc',)
  </code></pre>
  
  <p>And using *</p>
  
  <pre><code>for x in product(*["ghi","abc"]):
      print(x)
  </code></pre>
  
  <p>output:</p>
  
  <pre><code>('g', 'a')
  ('g', 'b')
  ('g', 'c')
  ('h', 'a')
  ('h', 'b')
  ('h', 'c')
  ('i', 'a')
  ('i', 'b')
  ('i', 'c')
  </code></pre>
  
  <p>How was this output generated? I know product() usually generates the combinations given the number of 'repeat'.  As for above, repeat is default to 1.  How come a ('a','g') wasnt generated?</p>
  
  <p>I guess what did <code>*["ghi","abc"]</code> actually produce to the <code>product()</code> function?  I mean I see what the outcome is but I just cant seem to get how it worked.</p>