为什么'('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'
。