为什么(‘ abc’)中的‘ a’为真,而[‘ abc’]中的‘ a’为假?

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

4717 次浏览

('abc')'abc'.'abc'包含子字符串 'a',因此是 'a' in 'abc' == True

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

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

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

实际上,('abc')'abc'相同,array of characters中包含字符 a,因此,第一次查找返回 True:

>>> 'a' in 'abc'
True

另一方面,['abc']是字符串列表或字符列表 (你可以把它想象成一个由字符 [['a', 'b', 'c']]组成的2-d 矩阵),其中作为单个字符的 a不是外部列表的成员。事实上,它是内部列表的第一个字符:

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


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


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

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

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

例如:

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

输出: True

因此,如果我们在(‘ abc’)中调用‘ a’,它与‘ abc’中的‘ a’相同,因为(‘ abc’)不是元组,而‘ abc’是一个字符数组,其中字符‘ a’位于字符串‘ abc’的索引0中。

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

Tuple 示例: < em > x = ('abc', 'def', 'mnop')

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

或者

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

这里总是 x == y

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

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

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

('abc')等于 'abc'

'a' in ('abc')等于 'a' in 'abc'

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

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