list() uses slightly more memory than list comprehension
<p>So i was playing with <code>list</code> objects and found little strange thing that if <code>list</code> is created with <code>list()</code> it uses more memory, than list comprehension? I'm using Python 3.5.2</p>

<pre><code>In [1]: import sys
In [2]: a = list(range(100))
In [3]: sys.getsizeof(a)
Out[3]: 1008
In [4]: b = [i for i in range(100)]
In [5]: sys.getsizeof(b)
Out[5]: 912
In [6]: type(a) == type(b)
Out[6]: True
In [7]: a == b
Out[7]: True
In [8]: sys.getsizeof(list(b))
Out[8]: 1008
</code></pre>

<p>From the <a href="https://docs.python.org/3.5/library/stdtypes.html#list">docs</a>:</p>

<blockquote>
  <p>Lists may be constructed in several ways:</p>
  
  <ul>
  <li>Using a pair of square brackets to denote the empty list: <code>[]</code></li>
  <li>Using square brackets, separating items with commas: <code>[a]</code>, <code>[a, b, c]</code></li>
  <li>Using a list comprehension: <code>[x for x in iterable]</code></li>
  <li>Using the type constructor: <code>list()</code> or <code>list(iterable)</code></li>
  </ul>
</blockquote>

<p>But it seems that using <code>list()</code> it uses more memory.</p>

<p>And as much <code>list</code> is bigger, the gap increases.</p>

<p><a href="https://i.stack.imgur.com/VVHJL.png"><img src="https://i.stack.imgur.com/VVHJL.png" alt="Difference in memory"></a></p>

<p>Why this happens?</p>

<p><strong>UPDATE #1</strong></p>

<p>Test with Python 3.6.0b2:</p>

<pre><code>Python 3.6.0b2 (default, Oct 11 2016, 11:52:53) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; import sys
&gt;&gt;&gt; sys.getsizeof(list(range(100)))
1008
&gt;&gt;&gt; sys.getsizeof([i for i in range(100)])
912
</code></pre>

<p><strong>UPDATE #2</strong></p>

<p>Test with Python 2.7.12:</p>

<pre><code>Python 2.7.12 (default, Jul  1 2016, 15:12:24) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
&gt;&gt;&gt; import sys
&gt;&gt;&gt; sys.getsizeof(list(xrange(100)))
1016
&gt;&gt;&gt; sys.getsizeof([i for i in xrange(100)])
920
</code></pre>