使用解释器时,表达式'a' in ('abc')
返回True,而'a' in ['abc']
返回False。有人可以解释这种行为吗?
答案 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 != y
但x[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'
返回。