I'm unclear about the difference between the syntax != and is not.  They appear to do the same thing:
>>> s = 'a'
>>> s != 'a'
False
>>> s is not 'a'
False
But, when I use is not in a list comprehension, it produces a different result than if I use !=.
>>> s = "hello"
>>> [c for c in s if c is not 'o']
['h', 'e', 'l', 'l', 'o']
>>> [c for c in s if c != 'o']
['h', 'e', 'l', 'l']
Why did the o get included in the first list, but not the second list?
 
     
     
     
     
    