为什么 'm' in ('medicean') 是 True

先来看一段代码:

1
2
3
4
>>> 'm' in ('medicean')
True
>>> 'm' in ['medicean']
False

为什么会出现这种结果呢?

这个问题的关键是:

  • (‘medicean’) 是不是一个元组
  • ‘m’ 是 [‘medicean’] 的一个元素吗

再来看下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> 'm' in 'medicean'
True
>>> 'm' in ('medicean',)
False

>>> ('medicean') == 'medicean'
True
>>> ('medicean',) == 'medicean'
False

>>> type(('medicean'))
<type 'str'>
>>> type(('medicean',))
<type 'tuple'>

>>> ['medicean'] == 'medicean'
False
>>> ['medicean'][0] == 'medicean'
True
>>> 'm' in ['medicean'][0]
True

看完上面的代码,懂了吧?

  • (‘medicean’) 其实就是 ‘medicean’
  • (‘medicean’,) 这才是一个元组,有人写的时候就是会忘记这个逗号
  • [‘medicean’] 是一个 list 类型, ‘m’ 当然不等于 ‘medicean’ 了
  • [‘medicean’][0] 是第一个元素,类型是 str