首页 > 解决方案 > IN 测试身份

问题描述

是否有一种内置方法可以在 python 中执行以下操作来测试不是相等性而是身份:

>>> a=1000
>>> b=1000
>>> c=1000
>>> a in [b,c] # test for equality
# True
>>> a is b | a is c
# False

有没有办法做到这一点map或更紧凑的东西?沿着:

map(is, iterable)

通过列表理解,我可以执行以下操作:

isin=lambda x,L: any([x is l for l in L])
isin(a,[b,c])
# False

标签: pythonpython-3.x

解决方案


您可以比较ids:

id(a) in map(id, [b, c])

根据is运营商的文件

运算符isis not测试对象的身份: x is y当且仅当xy是同一个对象时为真。使用id()函数确定对象的身份。

强调我的

小警告:

具有非重叠生命周期的两个对象可能具有相同的id() 值。

例如:

>>> id([]) in map(id, [[], []])
True

推荐阅读