la méthode update des ensembles fournit-elle toujours un ensemble trié
Bonjour,
j'utilise pour la 1ère fois la méthode update des ensembles, et j'obtiens un ensemble trié.
Cela me convient bien, mais j'aimerais comprendre si c'est un hasard ou si je peux être sûr de toujours obtenir un ensemble trié; je n'ai rien trouvé à ce sujet dans les docs que j'ai pu lire.
Code:
1 2 3 4 5 6 7 8
|
gripo=[[[10] for x in range(3)]for y in range(3)]
gripo[2][1]=[5,8]
gripo[2][2]=[1,6,7]
print('liste',gripo[2])
g=set()
for j in range(3): g.update(gripo[2][j])
print('set',g) |
remarque sur la doc officielle
@Sve@r
Bonjour,
je n'avais pas consulté la doc officielle car j'ai déjà constaté à plusieurs reprises qu'elle n'est pas toujours très facile à comprendre pour un débutant en Python.
J'ai eu l'impression, à tort ou à raison, qu'elle n'est pas destinée à des débutants en Python pour leur permettre de mieux comprendre les bases du langages,
mais plutôt à des utilisateurs confirmés pour leur permettre de trouver des précisions sur un point pour lequel ils ont une hésitation.
Sur votre conseil, j'ai quand même pris la peine de la consulter attentivement mais je n'ai rien trouvé au sujet de la question que j'ai posée malgré plus de 2 heures de recherches.
Je suis parti de la définition de set (j'en ai d'ailleurs trouvé 2 légèrement différentes), de hachable, de la fonction hash, de la fonction native hash, de l'opérateur eq, des comparaisons de valeurs, des comparaisons riches etc...
Voici par exemple la définition de hachable que j'ai trouvée:
hachable
Un objet est hachable s'il a une empreinte (hash) qui ne change jamais (il doit donc implémenter une méthode __hash__()) et s'il peut être comparé à d'autres objets (avec la méthode __eq__()). Les objets hachables dont la comparaison par __eq__ est vraie doivent avoir la même empreinte.
Mais après ces recherches, je ne sais pas ce qui est hachable et ce qui ne l'est pas. Bref, je reste sur ma faim ... et sur mon impression initiale.
J'ai compris d'après la page indiquée par wiztricks que sur des entiers de 1 à 9, les valeurs de hachages sont en principe égales à l'entier concerné mais comme je ne sais pas exactement dans quel contexte ceci est vrai, je vais quand même trier le résultat que j'obtiens par sécurité quitte à faire des opérations inutiles.