title: Python: filter(None, [list of bools]) behavior
body: <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>