为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会出现这样的情况

为什么会出现这样的情况

vicety 2016-06-30 17:55:04
s = set(['Adam', 'Lisa', 'Paul'])L = ['Adam', 'Lisa', 'Bart', 'Paul']print True == True     #得到Trueprint 'Adam' in s    #得到Trueprint 'Adam' in s == True    #得到False如题
查看完整描述

2 回答

已采纳
?
秋名山车神

TA贡献54条经验 获得超303个赞

说实话,这个问题我之前也不知道是为什么,于是抱着求知的心态,问了国外的大神,Михаил Никонов的回答原文如下:

It's because of comparison operator chaining, I think. In Python, expression (x < y < z) is, unlike in C, equivalent to (x < y and y < z), and that can be used for any sequence of comparisons (including membership tests). So basically, without parentheses, your last expression is equivalent to ('a' in 'abc' and 'abc' == True), or so it seems.

翻译过来差不多就是,print('a' in 'abc' == True) 这种表达式,在Python里面不像C语言那样,它必须要增加一个括号:print(('a' in 'abc') == True) 这样才对,如果不增加括号,就相当于print('a' in 'abc' and 'abc' == True) 结果当然是 False。

查看完整回答
反对 回复 2016-07-01
  • vicety
    vicety
    明白了 多谢!
  • 秋名山车神
    秋名山车神
    https://docs.python.org/3/reference/expressions.html#comparisons 这里官方文档也说明了这个事情
?
秋名山车神

TA贡献54条经验 获得超303个赞

感谢你的这个问题,学习了。

查看完整回答
1 反对 回复 2016-07-01
  • 2 回答
  • 1 关注
  • 1559 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信