Python: filter(None, [list of bools]) behavior
<p>EDIT: After reading the suggested link,  I have no idea why this has been marked as a duplicate. Sue me. </p>

<p>Can anyone help me understand why <code>filter(None, [list of bools])</code> removes <code>False</code> values?</p>

<p>Take the following:</p>

<pre><code>low = 25 
high = 35
to_match = [15, 30, 32, 99]
def check(low, high, to_match):
    return [low &lt;= i &lt;= high for i in to_match]
</code></pre>

<p><code>check(low, high, to_match)</code> returns <code>[False, True, True, False]</code></p>

<p><code>filter(None, check(low, high, to_match))</code> returns <code>[True, True]</code></p>

<p>So I thought, Python must think <code>False</code> is <code>None</code>! But to my surprise, <code>False is None</code> returns <code>False</code>!</p>

<p>A) What am I missing?</p>

<p>B) How can I filter only <code>None</code> values from <code>[True, None, False]</code>?</p>