为什么' a'在(' abc')真实的同时' a'在[' abc']中是假的?

时间:2015-08-09 04:24:53

标签: python

使用解释器时,表达式'a' in ('abc')返回True,而'a' in ['abc']返回False。有人可以解释这种行为吗?

5 个答案:

答案 0 :(得分:135)

('abc')'abc'相同。 'abc'包含子字符串'a',因此'a' in 'abc' == True

如果您想要元组,则需要编写('abc', )

['abc']是一个列表(包含单个元素,字符串'abc')。 'a'不是此列表的成员,因此'a' in ['abc'] == False

答案 1 :(得分:49)

('abc')不是元组。我认为你把它与元组('abc',)混淆了。

实际上,('abc')'abc'相同,array of characters其中a为字符,因此,第一次查找返回True:< / p>

>>> 'a' in 'abc'
True

另一方面,['abc']是字符串列表或字符列表列表(您可以将其视为2-d字符矩阵[['a', 'b', 'c']]其中a作为单个字符,不是外部列表的成员。实际上,它是内部列表的第一个字符:

>>> 'a' in ['abc']
False

>>> 'a' in ['abc'][0]
True

>>> 'a' == ['abc'][0][0]
True

答案 2 :(得分:3)

对于('abc'),您会得到一个&#39;在('abc')中返回true。

但是对于['abc'],因为它是一个数组列表,你会得到一个&#39;在['abc']中返回false。

示例:

输入: ('abc') == 'abc'

输出: True

因此,如果我们打电话给&#39;在(&#39; abc&#39;)中它与&#39; a&#39;相同。在&#39; abc&#39;因为(&#39; abc&#39;)不是元组,而是&#39; abc&#39;是一个字符阵列,其中字符是&#39; a&#39;在字符串&#39; abc&#39;的索引0中。

另一方面,[&#39; abc&#39;]是数组列表,其中&#39; abc&#39;是一个单个字符串,位于数组[&#39; abc&#39;]的索引0处。

Tupple示例: x = ('abc', 'def', 'mnop')

数组示例: x = ['abc', 'def', 'mnop']

x = ('abc'), y = 'abc'

此处始终x == y

但是在'a' in ['abc'] =&gt;

的情况下
x = ['abc'], y = 'abc'

此处x != yx[0] == y

答案 3 :(得分:2)

正如其他人所说,('abc')不是元组。 'a'不是['abc']的元素。该列表中唯一的元素是'abc'

x='abc' in ['abc']

print (x)

True #This will evaluate to true

这也将评估为真:

y = 'a' in ['a','b','c']

print (y)

True

答案 4 :(得分:0)

('abc')相当于'abc'

'a' in ('abc')相当于'a' in 'abc'

'a' in ('abc', )False作为'a' in ['abc']返回。

'a' in ['a', 'b', 'c']True作为'a' in 'abc'返回。