71 votes

Pourquoi " a " dans ('abc') est-il vrai alors que " a " dans ['abc'] est faux ?

Lors de l'utilisation de l'interpréteur, l'expression 'a' in ('abc') retourne Vrai, tandis que 'a' in ['abc'] retourne Faux. Quelqu'un peut-il expliquer ce comportement ?

135voto

dhke Points 2923

('abc') est la même chose que 'abc' . 'abc' contient la sous-chaîne 'a' et donc 'a' in 'abc' == True .

Si vous voulez le tuple à la place, vous devez écrire ('abc', ) .

['abc'] est une liste (contenant un seul élément, la chaîne de caractères 'abc' ). 'a' n'est pas un membre de cette liste, donc 'a' in ['abc'] == False

49voto

ozgurv Points 509

Tout d'abord, ('abc') n'est pas un tuple. Je pense que vous avez confondu avec le tuple ('abc',) .

En fait, ('abc') est identique à 'abc' qui est un array of characters donde a est dedans, donc la première recherche renvoie True :

>>> 'a' in 'abc'
True

D'un autre côté, ['abc'] est une liste de chaînes de caractères ou une liste de listes de caractères (que l'on peut considérer comme une matrice bidimensionnelle de caractères) donde a en tant que caractère unique, n'est pas un élément de la liste. En fait, c'est le premier caractère de la première chaîne de caractères de la liste :

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

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

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

3voto

M A K Ripon Points 67

Pour ('abc') vous obtenez "a" dans ('abc') retourner vrai.

Mais pour ['abc'] comme il s'agit d'une liste de tableaux, vous obtenez 'a' en ['abc'] renvoyer la fausse.

Exemple :

Entrée : ('abc') == 'abc'

Sortie : True

Donc si nous appelons 'a' dans ('abc') c'est la même chose que 'a' dans 'abc'.

o

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

Ici, toujours x == y .

Mais en cas de 'a' in ['abc'] =>

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

Aquí x != y pero x[0] == y

2voto

bLunt Points 162

Comme d'autres l'ont mentionné, ('abc') n'est pas un tuple. 'a' n'est pas un élément de ['abc'] . Le seul élément de cette liste est 'abc'

x='abc' in ['abc']

print (x)

True #This will evaluate to true

Ceci sera également évalué comme vrai :

y = 'a' in ['a','b','c']

print (y)

True

-3voto

erikkonstas Points 35
value in (value) #True, 'abc' is in 'abc'
value in (value,) #False, 'abc' is not in ('abc',)
value in [value] #True, 'abc' is in ['abc']
part in [value] #False, 'a' is not in ['abc']
part in [value][0] #True, 'a' is in 'abc'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X