为什么'('abc')中的'a'为真,而['abc']中的'a'为False?

Alv*_*ver 71 python

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

dhk*_*hke 135

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

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

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


ozg*_*gur 49

('abc')不是一个元组.我觉得你把它与元组混淆了('abc',).

实际上,('abc')是相同'abc',一个array of characters其中a作为字符是在它的,因此,第一查找返回True:

>>> 'a' in 'abc'
True
Run Code Online (Sandbox Code Playgroud)

另一方面,['abc']是字符串列表或字符列表列表(您可以将其视为二维字符矩阵[['a', 'b', 'c']]),其中a,作为单个字符,不是外部列表的成员.实际上,它是内部列表的第一个字符:

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

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

>>> 'a' == ['abc'][0][0]
True
Run Code Online (Sandbox Code Playgroud)

  • 或者换句话说,一旦应用了第一个`[0]`,你就会留下''a'=='abc'[0]`(它给出列表的第一个元素),然后,在应用之后第二个`[0]`,你留下''a'=='a'`,其评价为'True`. (2认同)
  • @Ahmed` ['abc'] [0]`给你''abc'.''abc'[0]`给你''a'. (2认同)