Почему "a" in ( "abc" ) True, а "a" в ['abc'] - False?

При использовании интерпретатора выражение 'a' in ('abc') возвращает True, а 'a' in ['abc'] возвращает False. Может ли кто-нибудь объяснить это поведение?

Ответ 1

('abc') совпадает с 'abc'. 'abc' содержит подстроку 'a', следовательно 'a' in 'abc' == True.

Если вам нужен кортеж, вам нужно написать ('abc', ).

['abc'] - это список (содержащий один элемент, строку 'abc'). 'a' не является членом этого списка, поэтому 'a' in ['abc'] == False

Ответ 2

('abc') не является кортежем. Я думаю, вы путаете это с кортежем ('abc',).

Собственно, ('abc') совпадает с 'abc', a array of characters, где a, поскольку символ находится в нем, поэтому первый поиск возвращает True:

>>> 'a' in 'abc'
True

С другой стороны, ['abc'] представляет собой список строк или список символов (вы можете представить его как 2-мерную матрицу символов [['a', 'b', 'c']]), где a, как один символ, не является членом внешнего списка. На самом деле это первый символ внутреннего списка:

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

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

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

Ответ 3

Для ('abc') вы получите 'a' in ('abc') return true.

Но для ['abc'], поскольку это список массивов, вы получаете 'a' in ['abc'] return false.

Пример:

Вход: ('abc') == 'abc'

Выход: True

Итак, если мы назовем 'a' in ('abc'), то он будет таким же, как 'a' в 'abc', потому что ('abc') не является кортежем, но 'abc' представляет собой массив символов, где символ 'a 'находится в индексе 0 строки' abc '.

С другой стороны, ['abc'] - это список массивов, где 'abc' - это одна строка, которая находится в индексе 0 массива ['abc'].

Пример примера: x = ('abc', 'def', 'mnop')

Пример массива: x = ['abc', 'def', 'mnop']

или

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

Здесь всегда x == y.

Но в случае 'a' in ['abc'] = >

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

Здесь x != y, но x[0] == y

Ответ 4

Как уже упоминалось, ('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

Ответ 5

('abc') эквивалентен 'abc'.

'a' in ('abc') эквивалентно 'a' in 'abc'.

'a' in ('abc', ) возвращает False как 'a' in ['abc'].

'a' in ['a', 'b', 'c'] возвращает True как 'a' in 'abc'.