当使用解释器时,表达式 'a' in ('abc')返回 True,而 'a' in ['abc']返回 False。有人能解释一下这种行为吗?
'a' in ('abc')
'a' in ['abc']
('abc')与 'abc'.'abc'包含子字符串 'a',因此是 'a' in 'abc' == True。
('abc')
'abc'
'a'
'a' in 'abc' == True
如果需要元组,则需要编写 ('abc', )。
('abc', )
['abc']是一个列表(包含单个元素字符串 'abc')。'a'不是这个列表的成员,所以 'a' in ['abc'] == False
['abc']
'a' in ['abc'] == False
('abc')不是元组。我认为您将它与元组 ('abc',)混淆了。
('abc',)
实际上,('abc')与 'abc'相同,array of characters中包含字符 a,因此,第一次查找返回 True:
array of characters
a
True
>>> 'a' in 'abc' True
另一方面,['abc']是字符串列表或字符列表 (你可以把它想象成一个由字符 [['a', 'b', 'c']]组成的2-d 矩阵),其中作为单个字符的 a不是外部列表的成员。事实上,它是内部列表的第一个字符:
[['a', 'b', 'c']]
>>> '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'
('abc') == 'abc'
输出: True
因此,如果我们在(‘ abc’)中调用‘ a’,它与‘ abc’中的‘ a’相同,因为(‘ abc’)不是元组,而‘ abc’是一个字符数组,其中字符‘ a’位于字符串‘ abc’的索引0中。
另一方面[‘ abc’]是数组列表,其中‘ abc’是位于 array [‘ abc’]索引0处的单个字符串。
Tuple 示例: < em > x = ('abc', 'def', 'mnop')
x = ('abc', 'def', 'mnop')
数组示例: < em > x = ['abc', 'def', 'mnop']
x = ['abc', 'def', 'mnop']
或者
x = ('abc'), y = 'abc'
这里总是 x == y。
x == y
但在 'a' in ['abc'] = > 的情况下
x = ['abc'], y = 'abc'
这里是 x != y但是是 x[0] == y
x != y
x[0] == y
('abc')等于 'abc'。
'a' in ('abc')等于 'a' in 'abc'。
'a' in 'abc'
'a' in ('abc', )将 False返回为 'a' in ['abc']。
'a' in ('abc', )
False
'a' in ['a', 'b', 'c']将 True返回为 'a' in 'abc'。
'a' in ['a', 'b', 'c']