Utilisation des set comme structure de données

Sources :

https://miamondo.org/le-langage-python/chapitre-13-les-ensembles-sets-et-frozensets/

Définition : Un ensemble est une collection non ordonnée d’objets uniques et immuables (en profondeur). La tentative d’insertion d’un doublon n’a absolument aucun effet et ne lève même pas d’exception. En revanche, la présence d’un élément modifiable tel qu’une liste lève une exception.

Les set sont utiles dans les test d'appartenance.

Les sets peuvent être utiles en mathématiques pour illustrer l'intersection et la réunion.

In [5]:
%%time
l = [i for i in range(50000000)]
Wall time: 6.87 s
In [2]:
%%time

l = [i for i in range(50000000)]
for i in range(2, 8):
    if i in l:
        print(i, "appartient à la liste")
        
2 appartient à la liste
3 appartient à la liste
4 appartient à la liste
5 appartient à la liste
6 appartient à la liste
7 appartient à la liste
Wall time: 7.07 s
In [3]:
%%time

l = [i for i in range(50000000)]
for i in range(49999990, 49999999):
    if i in l:
        print(i, "appartient à la liste")
49999990 appartient à la liste
49999991 appartient à la liste
49999992 appartient à la liste
49999993 appartient à la liste
49999994 appartient à la liste
49999995 appartient à la liste
49999996 appartient à la liste
49999997 appartient à la liste
49999998 appartient à la liste
Wall time: 11.3 s
In [4]:
%%time

s = {i for i in range(50000000)}
for i in range(49999990, 49999999):
    if i in s:
        print(i, "appartient au set")
49999990 appartient au set
49999991 appartient au set
49999992 appartient au set
49999993 appartient au set
49999994 appartient au set
49999995 appartient au set
49999996 appartient au set
49999997 appartient au set
49999998 appartient au set
Wall time: 10.2 s

Réunion et intersection

  • pour la réunion, onutilse le symbole |
  • pour l'intersection, on utilise le symbole &
In [23]:
A={i for i in range(20)}
B={i for i in range(5,30,2)}
In [24]:
print(A)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}
In [25]:
print(B)
{5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29}
In [26]:
print(A|B)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, 27, 29}
In [27]:
print(A&B)
{5, 7, 9, 11, 13, 15, 17, 19}
In [30]:
A.update(B)
In [31]:
print(A)
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, 27, 29}
In [ ]: