2024-04-25 10:01:35 发布
网友
我很惊讶当
[] is not []
计算结果为True。
True
代码中发生了什么?not和is语句到底在做什么?
not
is
a is not b是一个特殊的运算符,相当于not a is b。
a is not b
not a is b
如果a和b绑定到同一对象,则运算符a is b返回True,否则返回False。当您创建两个空列表时,会得到两个不同的对象,因此is返回False(因此is not返回True)。
a is b
is not
is是身份比较。
==是等式比较。
==
您的语句将生成两个不同的列表,并检查它们是否是同一个实例,而不是同一个实例。如果使用==,则返回true,因为它们都是空列表。
描述这种情况发生原因的最佳方式是:
这是你的例子
>>> x = [] >>> y = [] >>> print(x is y) ... False
x和y实际上是两个不同的列表,因此,如果向x中添加某些内容,则它不会出现在y中
x
y
>>> x.append(1) >>> print(x) ... [1] >>> print(y) ... []
那么我们如何使(x is y)求值为真呢?
x is y
>>> x = [] >>> y = x >>> print(x is y) ... True >>> x.append(10) >>> print(x) ... [10] >>> print(y) ... [10] >>> print(x is y) ... True
如果你想看看两个列表是否有相同的内容。。。
>>> x = [] >>> y = [] >>> print(x == y) ... True >>> x.append(21) >>> print(x) ... [21] >>> print(y) ... [] >>> print(x == y) ... False >>> y = [21] >>> print(x == y) ... True
a is not b
是一个特殊的运算符,相当于not a is b
。如果a和b绑定到同一对象,则运算符
a is b
返回True,否则返回False。当您创建两个空列表时,会得到两个不同的对象,因此is
返回False(因此is not
返回True)。is
是身份比较。==
是等式比较。您的语句将生成两个不同的列表,并检查它们是否是同一个实例,而不是同一个实例。如果使用
==
,则返回true,因为它们都是空列表。描述这种情况发生原因的最佳方式是:
这是你的例子
x
和y
实际上是两个不同的列表,因此,如果向x
中添加某些内容,则它不会出现在y
中那么我们如何使(
x is y
)求值为真呢?如果你想看看两个列表是否有相同的内容。。。
相关问题 更多 >
编程相关推荐