Adloun

L'ensemble (set) est le cousin du dictionnaire

Exercice supplémentaire · niveau 3 (difficile) · NSI (première), chapitre 5 — Les dictionnaires · Aux frontières du programme

Énoncé

L'ensemble (set) est le cousin du dictionnaire : des clés, sans valeurs. Mesurer le temps de tests d'appartenance dans un ensemble de éléments et dans la liste correspondante.

Corrigé


mots = ["chat", "chien", "chat", "souris"]
assert set(mots) == {"chat", "chien", "souris"}     # les doublons fondent
assert len(set(mots)) == 3

a, b = {1, 2, 3}, {3, 4}
assert a & b == {3}                 # intersection
assert a | b == {1, 2, 3, 4}        # union
assert a - b == {1, 2}              # difference

La mesure.


grand, liste = set(range(200000)), list(range(200000))

t0 = time.perf_counter()
[199999 in grand for _ in range(1000)]
t_set = time.perf_counter() - t0     # 0,00003 s

t0 = time.perf_counter()
[199999 in liste for _ in range(1000)]
t_liste = time.perf_counter() - t0   # 0,66 s

Un rapport de l'ordre de — et la cible a été choisie en dernière position de la liste, c'est-à-dire dans le pire cas du parcours. C'est la même différence de nature qu'entre dictionnaire et tableau, pour la même raison : la position est calculée, pas cherchée.

Quand choisir un ensemble. Dès que la question est « cet élément y est-il ? » et qu'aucune valeur ne l'accompagne : dédoublonner, tester une appartenance, comparer deux collections. Les opérations &, |, - reprennent exactement les notations mathématiques de l'intersection, de l'union et de la différence.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.