我不清楚语法!=
和is not
之间的区别。它们似乎做相同的事情:
>>> s = 'a'
>>> s != 'a'
False
>>> s is not 'a'
False
但是,当我在列表推导式中使用 is not
时,它会产生与使用 !=
不同的结果。
>>> 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']
为什么在第一个列表中包含了 o
,但在第二个列表中没有?
['h', 'e', 'l', 'l']
。我想知道为什么如果存在is
,它会导致比较 id(c),那么为什么它不会导致将其与 id('o') 进行比较呢?实际上,似乎c is not 'o'
被评估为id(c)!=id('o')
... 在我的 Python 2.7 中。 - eyquem