Je suis un peu confus au sujet du python in
pour les ensembles.
Si j'ai un ensemble s
et une instance b
est-il vrai que b in s
signifie " Y a-t-il un élément x
en s
de telle sorte que b == x
es true
" ?
Je suis un peu confus au sujet du python in
pour les ensembles.
Si j'ai un ensemble s
et une instance b
est-il vrai que b in s
signifie " Y a-t-il un élément x
en s
de telle sorte que b == x
es true
" ?
Oui, mais il également signifie hash(b) == hash(x)
donc l'égalité des éléments ne suffit pas à les rendre identiques.
Si quelqu'un a implémenté la fonction de hachage de sa classe de manière tordue, voilà ce qu'il pourrait obtenir (et mériter).
Je pense que la documentation sur test d'adhésion devrait indiquer plus clairement que l'égalité de hachage est une condition préalable pour set
, frozenset
y dict
. Une amélioration de ce type a été discutée dans un rapport de bogue en 2015, mais il a malheureusement été fermé en 2019 : bugs.python.org/issue23987#msg241661 .
Oui, cela peut signifier cela, ou cela peut être un simple itérateur. Par exemple : Exemple comme itérateur :
a=set(['1','2','3'])
for x in a:
print ('This set contains the value ' + x)
De même que pour un chèque :
a=set('ILovePython')
if 'I' in a:
print ('There is an "I" in here')
édité : édité pour inclure les ensembles plutôt que les listes et les chaînes de caractères
Je suppose qu'une liste ou même une chaîne de caractères peut être considérée comme ayant des propriétés similaires à celles d'un ensemble. Il s'agit d'une collection d'éléments.
Les sets se comportent différemment des dicts, vous devez utiliser des opérations de set comme issubset() :
>>> k
{'ip': '123.123.123.123', 'pw': 'test1234', 'port': 1234, 'debug': True}
>>> set('ip,port,pw'.split(',')).issubset(set(k.keys()))
True
>>> set('ip,port,pw'.split(',')) in set(k.keys())
False
Les cordes, bien qu'elles ne soient pas set
types, ont un précieux in
lors de la validation dans les scripts :
yn = input("Are you sure you want to do this? ")
if yn in "yes":
#accepts 'y' OR 'e' OR 's' OR 'ye' OR 'es' OR 'yes'
return True
return False
J'espère que cela vous aidera à mieux comprendre l'utilisation de in
avec cet exemple.
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.
101 votes
Êtes-vous un mathématicien ? Décrire des choses simples d'une manière trop complexe.. ;)
22 votes
Informaticien. Je suis un peu confus car la documentation dit "Tester l'appartenance de x à s". Pour moi, cela pourrait signifier "l'instance x est contenue dans s" ou "il existe une instance dans s qui a la même valeur que x". Je ne sais pas s'il s'agit d'une comparaison d'identité ou d'égalité.
8 votes
@Dejas : Puisque vous êtes conscient que Python possède deux opérateurs : la comparaison d'égalité et la comparaison d'identité, vous devriez être capable de construire une expérience qui confirme chacun d'eux. Il serait utile que tu publies cette expérience.