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 ?
Réponses
Trop de publicités?('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
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
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