首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这不作为数组成员资格测试?

为什么这不作为数组成员资格测试?
EN

Stack Overflow用户
提问于 2016-12-06 03:09:28
回答 1查看 565关注 0票数 2
代码语言:javascript
复制
>>> 5 in [1, 2, 3, 4] == False
False

我知道这是测试会员资格的一种奇怪的方式,而且

代码语言:javascript
复制
>>> 5 not in [1, 2, 3, 4]
True

是“正确”的方式。令我困惑的是,它的行为与两者不同。

代码语言:javascript
复制
>>> (5 in [1, 2, 3, 4]) == False
True

代码语言:javascript
复制
>>> 5 in ([1, 2, 3, 4] == False)
TypeError ...

我错过什么明显的东西了吗?(在Python2.7和Python3.4中测试)。

为了澄清,我理解最后三个片段。我要问的是first代码段的行为,以及为什么不同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-06 03:17:16

这是一个连锁的比较。你可能知道你能做到

代码语言:javascript
复制
1 < 2 < 3

在Python中,它相当于(1 < 2) and (2 < 3)。(或许你没有,现在你知道了。)同样的情况也适用于in==

代码语言:javascript
复制
5 in [1, 2, 3, 4] == False

等于

代码语言:javascript
复制
(5 in [1, 2, 3, 4]) and ([1, 2, 3, 4] == False)

由于[1, 2, 3, 4]不等于False,所以整个表达式的计算结果为False

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40987185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档