首页 > 解决方案 > Python 中的 `in` 运算符用于比较什么?

问题描述

我试图了解使用什么机制in来比较针和干草堆。

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

如果它既不是==(等值比较)也不是is(对象身份比较),它是什么?

标签: pythonpython-3.xequalitymembership

解决方案


正如文档所说:

对于 list、tuple、set、frozenset、dict 或 collections.deque 等容器类型,表达式 x in y 等价于 any(x is e or x == e for e in y)。

所以,两者兼而有之。


推荐阅读