Python 中的 `in` 运算符用于比较什么?
What does the `in` operator in Python use for comparison?
我想了解in
使用什么机制来比较针和大海捞针。
[] in ([],[],[])
是True
,所以不能是is
,因为[] is []
是False
- 但是
math.nan in ([],[],math.nan)
也是True
,所以不能是==
,因为math.nan==math.nan
是False
。
如果既不是==
(等值比较)也不是is
(对象同一性比较),那是什么?
正如 docs 所说:
For container types such as list, tuple, set, frozenset, dict, or collections.deque, the expression x in y is equivalent to any(x is e or x == e for e in y).
所以,两者都是。
我想了解in
使用什么机制来比较针和大海捞针。
[] in ([],[],[])
是True
,所以不能是is
,因为[] is []
是False
- 但是
math.nan in ([],[],math.nan)
也是True
,所以不能是==
,因为math.nan==math.nan
是False
。
如果既不是==
(等值比较)也不是is
(对象同一性比较),那是什么?
正如 docs 所说:
For container types such as list, tuple, set, frozenset, dict, or collections.deque, the expression x in y is equivalent to any(x is e or x == e for e in y).
所以,两者都是。