python - Python 中的 `in` 运算符用于比较什么?
问题描述
我试图了解使用什么机制in
来比较针和干草堆。
[] in ([],[],[])
是True
,所以不可能is
,因为[] is []
是False
- 但是
math.nan in ([],[],math.nan)
是True
,也是,所以它不可能是==
,因为math.nan==math.nan
是False
。
如果它既不是==
(等值比较)也不是is
(对象身份比较),它是什么?
解决方案
正如文档所说:
对于 list、tuple、set、frozenset、dict 或 collections.deque 等容器类型,表达式 x in y 等价于 any(x is e or x == e for e in y)。
所以,两者兼而有之。
推荐阅读
- java - java.lang.ClassNotFoundException: org.postgresql.Driver 问题
- django - 使用 transaction.atomic() 不适用于 Azure SQL 数据库
- apache-spark - 相同的 Apache Spark 查询,本地/EMR Spark 与 Databricks 上的不同执行计划
- angular - 打字稿:在类内调用静态方法(Angular HttpInterceptor)
- java - 响应 SOAP 请求的 UTF-8 问题
- swift - Swift 获取自定义注解信息
- git - 用于将特定目录下载为 tarball 的 Github API
- amazon-web-services - AutoScaling::LaunchConfiguration 的默认 BlockDeviceMappings 设置
- javascript - 将用户位置保存到 mongodb、nodejs 服务器
- java - 检索 TextView 的名称并在其他类之间共享它们的值