# créer un un ensemble

ensemble = {1,5,9,5,1,2,4}
ensemble

Comme on peut le voir, les éléments en doubles dans ensemble ont été éliminés et l'ordre affiché n'est pas celui dans lequel les éléments ont été saisis.

# essayons quelque chose...

ensemble[3]

l'accès aux éléments par indice comme pour les listes n'est pas possible, cela n'a tout simpliement pas de sens.

Conversion list <-> set

liste = [1,5,9,5,1,2,4]
ensemble = set(liste)
ensemble
ensemble = {1, 9, 5, 4, 2}
liste = list(ensemble)
liste

Méthodes sur les ensembles

ajout et retrait : add et remove

ensemble = {1, 9, 5, 4, 2}
ensemble.add(18)
ensemble.remove(9)
ensemble

Attention de bien tester si un élément est dans l'ensemble avant la suppression car sinon...

ensemble.remove(3)

et du coup ...

tester si un élément est présent dans un ensemble : in

3 in ensemble
18 in ensemble

Longueur et ensemble vide

# l'ensemble vide est noté {} ou set()
vide = set()
vide.add(3)
vide.remove(3)

# Calculer le nb d'éléments d'un ensemble
len(vide)

Application

Créer une fonction ensembleCarres prenant en paramètre un entier $n$ e renvoyant un ensemble contenant les carrés des entiers de 1 à $n$

def ensembleCarres(n):
    # YOUR CODE HERE
    raise NotImplementedError()
ec = ensembleCarres(10)
assert len(ec)==10
assert 64 in ec
  • Créez une liste l de carrés jusqu'à un million.
  • Créez un ensemble s de carrés jusqu'à un million.
  • Recherchez si $874466246641$ est un carré
# YOUR CODE HERE
raise NotImplementedError()

Comparez les temps de recherche d'un même nombre dans l'ensemble et dans la liste.

%%time
assert 874466246641 in s
%%time
assert 874466246641 in l

quelques autres méthodes sur les set

s.isdisjoint(s2)
s.issubset(s2)
s.issuperset(s2)
s <= s2 : inclusion (pareil avec s >= s2).
s < s2 : inclusion stricte (pareil avec s >= s2).
set.union(s1, s2, s3) : renvoie la réunion de plusieurs sets.
set.intersection(s1, s2, s3) : renvoie l'intersection de plusieurs sets

Exercice

Créer une fonction ensembleCubes prenant en paramètre un entier $n$ e renvoyant un ensemble contenant les cubes des entiers de 1 à $n$

def ensembleCubes(n):
    # YOUR CODE HERE
    raise NotImplementedError()
assert 27 in ensembleCubes(10)

En déduire en une ligne de python combien de nombres entre 1 et 100 sont à la fois des carrés et des cubes

# Tapez votre ligne dans la cellule ci-dessous
# Attention, pas plus d'une ligne de Python !!