为什么'('abc')中的'a'是真的而中的'a'是假的?

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

('abc')'abc'是一样'abc''abc'包含子string'a' ,因此'abc'中的'a' 'a' in 'abc' == True

如果你想要这个元组,你需要写('abc', )

['abc']是一个列表(包含单个元素,string'abc' )。 'a'不是这个列表的成员,所以'a' in ['abc'] == False

('abc')不是一个元组。 我想你用元组('abc',)把这个弄糊涂了。

实际上, ('abc')'abc'是相同array of characters ,因此第一个查找返回True

 >>> 'a' in 'abc' True 

另一方面, ['abc']是string列表或者字符列表列表(你可以把它看作是字符的二维matrix[['a', 'b', 'c']] ,其中a作为单个字符不是外部列表的成员。 实际上,它是内部列表的第一个字符:

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

对于('abc')你会得到('abc') 'a'。

但是对于['abc']因为它是一个数组列表,所以在['abc']返回'a'返回false。

例:

input:( ('abc') == 'abc'

输出: True

所以如果我们在('abc')中调用'a',它与'abc'中的'a'相同,因为('abc')不是一个元组,而'abc'是一个字符数组,string'abc'的索引0。

另一方面,['abc']是数组列表,其中'abc'是位于数组['abc']的索引0处的单个string。

黑斑举例: x = ('abc', 'def', 'mnop')

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

要么

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

这里总是x == y

但是在'a' in ['abc'] =>中的'a' in ['abc']情况下

 x = ['abc'], y = 'abc' 

这里x != y但是x[0] == y

正如其他人所提到的, ('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 

('abc')等同于'abc'

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

'a' in ('abc', )中的'a' in ['abc']返回False'a' in ['abc']

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