Why is ‘a’ in (‘abc’) True while ‘a’ in [‘abc’] is False? 原文链接
问
在使用解释器的时候,表达式'a' in ('abc')
返回是True,而 'a' in ['abc']
返回的是Fasle, 有人可以解释这里发生了什么吗?
答
这个问题可能是很多python
新手会有的疑惑, 到底是为啥来着呢?其实这里主要要搞明白的是几个点
('abc')
是不是一个元组 ?('abc')
到底是什么?'a'
是['abc']
的一个元素吗?
In [1]: 'a' in ('abc')
Out[1]: True
In [2]: ('abc')
Out[2]: 'abc'
In [3]: ('abc') == 'abc'
Out[3]: True
In [4]: 'a' in ['abc']
Out[4]: False
In [5]: 'a' in ['abc'][0]
Out[5]: True
In [6]: ['abc'][0]
Out[6]: 'abc'
看完上面的代码其实就应该明白了
('abc')
其实就是'abc'
, 所以'a'
当然在'abc'
中了('abc')
不是元组,元组的写法应该是('abc', )
, 刚接触python的人有时候会忘了写那么一个逗号。['abc']
是个list类型,'abc'
只是其中一个元素,'a'
当然不等于'abc'
啦,所以返回就是False['abc'][0]
其实就是'abc'
,'a' in 'abc'
当然是True
记住这个小例子,对一个元素的元组的写法就不容易忘了。