Python 中的 `in` 运算符用于比较什么?

What does the `in` operator in Python use for comparison?

我想了解in使用什么机制来比较针和大海捞针。

  1. [] in ([],[],[])True,所以不能是is,因为[] is []False
  2. 但是math.nan in ([],[],math.nan)也是True,所以不能是==,因为math.nan==math.nanFalse

如果既不是==(等值比较)也不是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).

所以,两者都是。