为什么会出现这样的情况

s = set(['Adam', 'Lisa', 'Paul'])

L = ['Adam', 'Lisa', 'Bart', 'Paul']

print True == True     #得到True

print 'Adam' in s    #得到True

print 'Adam' in s == True    #得到False

如题

vicety
浏览 1560回答 2
2回答

秋名山车神

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

秋名山车神

感谢你的这个问题,学习了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python