Python:!= 和 "is not"之间的区别

标签 python syntax list-comprehension

我不清楚语法 !=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 包含在第一个列表中,但没有包含在第二个列表中?

最佳答案

测试对象身份,但是==测试对象值是否相等:

In [1]: a = 3424
In [2]: b = 3424

In [3]: a is b
Out[3]: False

In [4]: a == b
Out[4]: True

关于Python:!= 和 "is not"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782203/

相关文章:

parsing - 为什么这么多汇编语法都包含逗号?

python - 在 Django 的 auth 用户模型中使名字、姓氏成为必需属性而不是可选属性

syntax - latex :美元符号与\(\)

php - 在不引用 key 的情况下访问数组

python - 在字典理解中创建字典

Python:查找列表对的一个成员中的连续变化,报告其他成员

python - 子类化 django choicefield 不起作用

java - H2OServerError : Server process terminated with error code 1 in Python on Mac while running h2o. 初始化()

python - 按周分组一个 Dataframe

python - 在 python 函数调用的参数列表中嵌套生成器表达式