Why does this return a list of generator objects?
<p>lets say I have some code:</p>

<pre><code>a= {'first': 2, 'second': 3}
b = {'first':4, 'second': 6}
c=[a,b]
d = ['first', 'second']
q = [(item[col] for col in d) for item in c]
</code></pre>

<p>for some reason (despite looking around stackoverflow) q continues to be a list of generator objects</p>

<pre><code>print q
[&lt;generator object &lt;genexpr&gt; at 0x0000000002875750&gt;, &lt;generator object &lt;genexpr&gt; at 0x0000000002875798&gt;]
</code></pre>

<p>however when I just do a basic iteration:</p>

<pre><code>x = []
for item in c:
y = []
for col in d:
    y.append(item[col])

x.append(tuple(y))
</code></pre>

<p>I get the expected values:</p>

<pre><code>print x
[(2, 3), (4, 6)]
</code></pre>

<p>Why doesn't the first way return the same as the second?  I don't see the difference.  thanks- </p>