首页 > 解决方案 > 任何人都可以解释列表中 is 运算符的工作机制吗?

问题描述

l1=[1,2,3]
l2=[1,2,3]
print(l1 is l2)
# False

谁能解释这段代码。为什么是假的?

标签: python

解决方案


is运算符检查两个操作数是否引用同一个对象。在这个 l1 和 l2 是两个不同的对象,所以,它返回 False。

请注意,两个列表实例不会仅仅因为它们具有相同的内容而引用同一个对象。

您可以使用id来检查两者是否都引用同一个对象。检查下面的代码。在这种情况下,您可以看到l1l2是不同的对象,而l2l3指的是同一个对象。请注意==以下代码中运算符的使用以及列表内容相同时如何返回True

l1=[1,2,3]
l2=[1,2,3]
l3 = l2
print("l1 = %s" %(id(l1)))
print("l2 = %s" %(id(l2)))
print("l3 = %s" %(id(l3)))
print(l1 is l2)
print(l2 is l3)
print(l1 == l2)
print(l2 == l3)

输出:

l1 = 139839807952728
l2 = 139839807953808
l3 = 139839807953808
False
True
True
True

注意:如果要根据内容比较两个对象,请使用==运算符


推荐阅读