title: Cartesian Product memory error converting itertools.product to list
body: <p>I'm trying to create the Cartesian product of a list of lists. When I try to convert the result to a list it will give me a memory error. If I run it without converting it to a list it runs fine.</p>
  
  <pre><code>lists = [['a','b','c' ],['a','b','c' ],['a','b','c' ],['a','b','c' ],['a','b','c' ],['a','b','c' ],['a','b','c' ],['a','b','c' ],['a','b','c' ]]
  my_product = list(itertools.product(*lists))
  </code></pre>
  
  <p>I even tried to filter through some of the result using itertools.dropwhile to make it smaller before converting it into a list and I get the same result.</p>
  
  <pre><code>filtered = itertools.dropwhile(lambda x: x[1]!=x[2] and x[3]!=x[4] and x[3]!=x[5] and x[4]!=x[5], my_product)
  </code></pre>