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