提问人:DYZ 提问时间:1/27/2021 最后编辑:DYZ 更新时间:1/27/2021 访问量:113
Python 中的“in”运算符用于比较什么?[复制]
What does the `in` operator in Python use for comparison? [duplicate]
问:
我试图了解使用什么机制来比较针和大海捞针。in
[] in ([],[],[])
是 ,所以它不可能是 ,因为是True
is
[] is []
False
- 但是 是 ,所以它不可能是 ,因为 是 。
math.nan in ([],[],math.nan)
True
==
math.nan==math.nan
False
如果它既不是(相等值的比较)也不是(对象身份的比较),它是什么?==
is
答:
3赞
bereal
1/27/2021
#1
正如文档所说:
对于容器类型(如 list、tuple、set、frozenset、dict 或 collections.deque),y 中的表达式 x 等效于 any(x is e or x == e for e in y)。
所以,两者兼而有之。
评论
0赞
dfundako
1/27/2021
无论如何,要看到使用?或者你只需要知道,当你看到时,它是实现的?dis.dis
(in)
0赞
juanpa.arrivillaga
1/27/2021
@dfundako不,绝对不是作为 实现的。而你看不到这一点,它只会表明你正在使用二进制运算符。它相当于那个。is
any
dis.dis
is
1赞
bereal
1/27/2021
@dfundako在内部,列表是用 C 语言实现的,因此您无法在 .对于非内置容器,您可以检查 .dis
__contains__
1赞
ShadowRanger
1/27/2021
@dfundako:它在C层深处使用了PyObject_RichCompareBool
;你不会用 .这是一个 C 优化的测试,明确记录为基于身份/基于身份的短路。dis
==
!=
评论
in
__contains__()
__contains__
is
==
is
==