• Aucun résultat trouvé

Introduction à l’algorithmique et à la programmation

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction à l’algorithmique et à la programmation"

Copied!
55
0
0

Texte intégral

(1)

Introduction à l’algorithmique et à la programmation

Cours 6

Anthony Labarre

Université Gustave Eiffel

(2)

Plan d’aujourd’hui

Les ensembles

Les dictionnaires

2 / 21

(3)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ; I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ? I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ? I ...

I On verra les structures les plus utilisées aujourd’hui, mais

il en existe beaucoup d’autres (voir par exemple le module

collections ) ;

(4)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ;

I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ? I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ? I ...

I On verra les structures les plus utilisées aujourd’hui, mais il en existe beaucoup d’autres (voir par exemple le module collections ) ;

3 / 21

(5)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ; I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ? I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ? I ...

I On verra les structures les plus utilisées aujourd’hui, mais

il en existe beaucoup d’autres (voir par exemple le module

collections ) ;

(6)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ; I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ? I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ? I ...

I On verra les structures les plus utilisées aujourd’hui, mais il en existe beaucoup d’autres (voir par exemple le module collections ) ;

3 / 21

(7)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ; I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ?

I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ? I ...

I On verra les structures les plus utilisées aujourd’hui, mais

il en existe beaucoup d’autres (voir par exemple le module

collections ) ;

(8)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ; I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ? I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ? I ...

I On verra les structures les plus utilisées aujourd’hui, mais il en existe beaucoup d’autres (voir par exemple le module collections ) ;

3 / 21

(9)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ; I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ? I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ?

I ...

I On verra les structures les plus utilisées aujourd’hui, mais

il en existe beaucoup d’autres (voir par exemple le module

collections ) ;

(10)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ; I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ? I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ? I ...

I On verra les structures les plus utilisées aujourd’hui, mais il en existe beaucoup d’autres (voir par exemple le module collections ) ;

3 / 21

(11)

Structures de données en Python

I On a déjà vu des itérables modifiables (list) ou non (str, tuple) ;

I On va voir des structures plus avancées aujourd’hui ; I Le choix de la structure dépendra de vos besoins ;

I l’ordre est-il important ?

I veut-on autoriser les doublons ? I a-t-on besoin d’indices ?

I a-t-on besoin de modifier les éléments ? I ...

I On verra les structures les plus utilisées aujourd’hui, mais

il en existe beaucoup d’autres (voir par exemple le module

(12)

Python pas à pas

Les ensembles

4 / 21

(13)

Les set

I Les set sont des itérables modifiables représentant des ensembles ; donc :

1. chaque élément ne peut y êtrequ’une seule fois; 2. il n’y a pas d’ordre, donc il n’y a pas de positions ... 3. ... et donc l’opérateur[]ne marche pas ;

Les ensembles sont modifiables, mais ne

peuvent contenir que des éléments non mo-

difiables.

(14)

Les set

I Les set sont des itérables modifiables représentant des ensembles ; donc :

1. chaque élément ne peut y êtrequ’une seule fois;

2. il n’y a pas d’ordre, donc il n’y a pas de positions ... 3. ... et donc l’opérateur[]ne marche pas ;

Les ensembles sont modifiables, mais ne peuvent contenir que des éléments non mo- difiables.

5 / 21

(15)

Les set

I Les set sont des itérables modifiables représentant des ensembles ; donc :

1. chaque élément ne peut y êtrequ’une seule fois; 2. il n’y a pas d’ordre, donc il n’y a pas de positions ...

3. ... et donc l’opérateur[]ne marche pas ;

Les ensembles sont modifiables, mais ne

peuvent contenir que des éléments non mo-

difiables.

(16)

Les set

I Les set sont des itérables modifiables représentant des ensembles ; donc :

1. chaque élément ne peut y êtrequ’une seule fois; 2. il n’y a pas d’ordre, donc il n’y a pas de positions ...

3. ... et donc l’opérateur[]ne marche pas ;

Les ensembles sont modifiables, mais ne peuvent contenir que des éléments non mo- difiables.

5 / 21

(17)

Les set

I Les set sont des itérables modifiables représentant des ensembles ; donc :

1. chaque élément ne peut y êtrequ’une seule fois; 2. il n’y a pas d’ordre, donc il n’y a pas de positions ...

3. ... et donc l’opérateur[]ne marche pas ;

Les ensembles sont modifiables, mais ne

peuvent contenir que des éléments non mo-

difiables.

(18)

Utilisation des set

I Les set se déclarent comme les listes, mais avec des accolades :

>>> S = {3, 1, 4, 6, 2}

I Ou à l’aide de la fonction set(iterable), aussi utile pour le transtypage :

>>> S = set([3, 1, 4, 6, 2])

>>> ensemble_vide = set() # ou {}

I Comme ce sont des itérables, on peut utiliser in et len exactement de la même manière que pour les chaînes, les tuples, les listes, ...

6 / 21

(19)

Utilisation des set

I Les set se déclarent comme les listes, mais avec des accolades :

>>> S = {3, 1, 4, 6, 2}

I Ou à l’aide de la fonction set(iterable), aussi utile pour le transtypage :

>>> S = set([3, 1, 4, 6, 2])

>>> ensemble_vide = set() # ou {}

I Comme ce sont des itérables, on peut utiliser in et len

exactement de la même manière que pour les chaînes, les

tuples, les listes, ...

(20)

Utilisation des set

I Les set se déclarent comme les listes, mais avec des accolades :

>>> S = {3, 1, 4, 6, 2}

I Ou à l’aide de la fonction set(iterable), aussi utile pour le transtypage :

>>> S = set([3, 1, 4, 6, 2])

>>> ensemble_vide = set() # ou {}

I Comme ce sont des itérables, on peut utiliser in et len exactement de la même manière que pour les chaînes, les tuples, les listes, ...

6 / 21

(21)

Utilisation des set

I Les set se déclarent comme les listes, mais avec des accolades :

>>> S = {3, 1, 4, 6, 2}

I Ou à l’aide de la fonction set(iterable), aussi utile pour le transtypage :

>>> S = set([3, 1, 4, 6, 2])

>>> ensemble_vide = set() # ou {}

I Comme ce sont des itérables, on peut utiliser in et len

exactement de la même manière que pour les chaînes, les

tuples, les listes, ...

(22)

Utilisation des set

I Les set se déclarent comme les listes, mais avec des accolades :

>>> S = {3, 1, 4, 6, 2}

I Ou à l’aide de la fonction set(iterable), aussi utile pour le transtypage :

>>> S = set([3, 1, 4, 6, 2])

>>> ensemble_vide = set() # ou {}

I Comme ce sont des itérables, on peut utiliser in et len exactement de la même manière que pour les chaînes, les tuples, les listes, ...

6 / 21

(23)

Opérations ensemblistes

I Les opérations que vous connaissez sur les ensembles sont disponibles :

math python Méthode s∪t s | t s.union(t)

s∩t s & t s.intersection(t) s\t s - t s.difference(t)

s∆t s ^ t s.symmetric_difference(t)

I Ces méthodes ne modifient nis, nit; si c’est votre but : Opération Méthode

s = s | t s.update(t)

s = s & t s.intersection_update(t) s = s - t s.difference_update(t)

s = s ^ t s.symmetric_difference_update(t)

(24)

Opérations ensemblistes

I Les opérations que vous connaissez sur les ensembles sont disponibles :

math python Méthode s∪t s | t s.union(t)

s∩t s & t s.intersection(t) s\t s - t s.difference(t)

s∆t s ^ t s.symmetric_difference(t)

I Ces méthodes ne modifient nis, nit; si c’est votre but : Opération Méthode

s = s | t s.update(t)

s = s & t s.intersection_update(t) s = s - t s.difference_update(t)

s = s ^ t s.symmetric_difference_update(t)

7 / 21

(25)

Autres méthodes modifiant les ensembles

I Les autres méthodes suivantes permettent de modifier les ensembles :

I s.add(x)ajoutexàs;

I s.remove(x)retirexdessisle contient — sinon, elle provoque une erreur ;

I s.discard(x)retirexdessans erreur sisne le contient pas.

I enfin,s.pop()(sans paramètre) retire et renvoie un élément aléatoire dess’il n’est pas vide — sinon, elle provoque une erreur.

(26)

Comparaison d’ensembles

I On peut aussi comparer les ensembles à l’aide des opérateurs suivants :

math python s = t s == t s 6= t s != t s ⊂ t s < t

s ⊆ t s <= t

s ⊃ t s > t

s ⊇ t s >= t

9 / 21

(27)

frozenset

I Les frozenset sont des ensembles non-modifiables ;

I Ils sont principalement utiles quand on veut représenter des collections d’ensembles ;

Exemple (sous-ensembles de {1, 2, 3} de taille 2)

>>> S = set([{1, 2}, {1, 3}, {2, 3}])

Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set'

>>> S = set([frozenset([1, 2]), frozenset([1, 3]),

frozenset([2, 3])])

>>> S

{frozenset({1, 3}), frozenset({1, 2}), frozenset({2, 3})}

(28)

frozenset

I Les frozenset sont des ensembles non-modifiables ; I Ils sont principalement utiles quand on veut représenter

des collections d’ensembles ;

Exemple (sous-ensembles de {1, 2, 3} de taille 2)

>>> S = set([{1, 2}, {1, 3}, {2, 3}])

Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'set'

>>> S = set([frozenset([1, 2]), frozenset([1, 3]),

frozenset([2, 3])])

>>> S

{frozenset({1, 3}), frozenset({1, 2}), frozenset({2, 3})}

10 / 21

(29)

frozenset

I Les frozenset sont des ensembles non-modifiables ; I Ils sont principalement utiles quand on veut représenter

des collections d’ensembles ;

Exemple (sous-ensembles de {1, 2, 3} de taille 2)

>>> S = set([{1, 2}, {1, 3}, {2, 3}])

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: unhashable type: 'set'

>>> S = set([frozenset([1, 2]), frozenset([1, 3]),

frozenset([2, 3])])

>>> S

(30)

Test d’efficacité

Exercice

Pour chacun des itérables vus jusqu’ici (set,list,tuple, frozenset), créez un itérable de ce type contenant{0, 1, 2,. . ., n−1}et écrivez une fonction vérifiant si chacun de ces entiers est dans l’itérable. Comparez le temps d’exécution avec le moduletime.

11 / 21

(31)

Python pas à pas

Les dictionnaires

(32)

Dictionnaires

I Les dictionnaires sont comme les listes, mais :

1. les indices peuvent être autre chose que des naturels ; 2. il n’y a pas d’ordre ;

I Ces indices sont appelés des clés, et on leur associe des valeurs ;

I On peut les déclarer avec la syntaxe suivante :

clients = {

"Jean Dupont": "19/01/1985",

"Anne Dubois": "27/04/1966" }

clés valeurs

13 / 21

(33)

Dictionnaires

I Les dictionnaires sont comme les listes, mais :

1. les indices peuvent être autre chose que des naturels ;

2. il n’y a pas d’ordre ;

I Ces indices sont appelés des clés, et on leur associe des valeurs ;

I On peut les déclarer avec la syntaxe suivante :

clients = {

"Jean Dupont": "19/01/1985",

"Anne Dubois": "27/04/1966" }

clés valeurs

(34)

Dictionnaires

I Les dictionnaires sont comme les listes, mais :

1. les indices peuvent être autre chose que des naturels ; 2. il n’y a pas d’ordre ;

I Ces indices sont appelés des clés, et on leur associe des valeurs ;

I On peut les déclarer avec la syntaxe suivante :

clients = {

"Jean Dupont": "19/01/1985",

"Anne Dubois": "27/04/1966" }

clés valeurs

13 / 21

(35)

Dictionnaires

I Les dictionnaires sont comme les listes, mais :

1. les indices peuvent être autre chose que des naturels ; 2. il n’y a pas d’ordre ;

I Ces indices sont appelés des clés, et on leur associe des valeurs ;

I On peut les déclarer avec la syntaxe suivante :

clients = {

"Jean Dupont": "19/01/1985",

"Anne Dubois": "27/04/1966" }

clés valeurs

(36)

Dictionnaires

I Les dictionnaires sont comme les listes, mais :

1. les indices peuvent être autre chose que des naturels ; 2. il n’y a pas d’ordre ;

I Ces indices sont appelés des clés, et on leur associe des valeurs ;

I On peut les déclarer avec la syntaxe suivante :

clients = {

"Jean Dupont": "19/01/1985",

"Anne Dubois": "27/04/1966"

}

clés valeurs

13 / 21

(37)

Dictionnaires

I Les dictionnaires sont comme les listes, mais :

1. les indices peuvent être autre chose que des naturels ; 2. il n’y a pas d’ordre ;

I Ces indices sont appelés des clés, et on leur associe des valeurs ;

I On peut les déclarer avec la syntaxe suivante :

clients = {

"Jean Dupont": "19/01/1985",

"Anne Dubois": "27/04/1966"

}

clés

valeurs

(38)

Dictionnaires

I Les dictionnaires sont comme les listes, mais :

1. les indices peuvent être autre chose que des naturels ; 2. il n’y a pas d’ordre ;

I Ces indices sont appelés des clés, et on leur associe des valeurs ;

I On peut les déclarer avec la syntaxe suivante :

clients = {

"Jean Dupont": "19/01/1985",

"Anne Dubois": "27/04/1966"

}

clés valeurs

13 / 21

(39)

Dictionnaires : exemple d’utilisation

Exemple

>>> D = dict() # dictionnaire vide

>>> D['toto'] = 4 # associe 4 a la cle 'toto'

>>> D['titi'] = 6

>>> D['toto']

4

>>> D['toto'] = 'bonjour' # remplace 4

>>> print(D)

{'titi': 6, 'toto': 'bonjour'}

La clé doit être un élément non modifiable

(40)

Dictionnaires : accès aux éléments

I Les méthodes suivantes du dictionnairedicopermettent d’accéder :

1. aux clés :dico.keys(); 2. aux valeurs :dico.values(); 3. aux deux :dico.items();

Exemple

>>> dico = {"une clé": "une valeur",

"une autre clé": "une autre valeur"}

>>> dico.keys()

dict_keys(['une clé', 'une autre clé'])

>>> dico.values()

dict_values(['une valeur', 'une autre valeur'])

>>> dico.items()

dict_items([('une clé', 'une valeur'),

('une autre clé', 'une autre valeur')])

I Comme toujours, on peut transtyper le résultat ;

15 / 21

(41)

Dictionnaires : accès aux éléments

I Les méthodes suivantes du dictionnairedicopermettent d’accéder :

1. aux clés :dico.keys();

2. aux valeurs :dico.values(); 3. aux deux :dico.items();

Exemple

>>> dico = {"une clé": "une valeur",

"une autre clé": "une autre valeur"}

>>> dico.keys()

dict_keys(['une clé', 'une autre clé'])

>>> dico.values()

dict_values(['une valeur', 'une autre valeur'])

>>> dico.items()

dict_items([('une clé', 'une valeur'),

('une autre clé', 'une autre valeur')])

I Comme toujours, on peut transtyper le résultat ;

(42)

Dictionnaires : accès aux éléments

I Les méthodes suivantes du dictionnairedicopermettent d’accéder :

1. aux clés :dico.keys(); 2. aux valeurs :dico.values();

3. aux deux :dico.items();

Exemple

>>> dico = {"une clé": "une valeur",

"une autre clé": "une autre valeur"}

>>> dico.keys()

dict_keys(['une clé', 'une autre clé'])

>>> dico.values()

dict_values(['une valeur', 'une autre valeur'])

>>> dico.items()

dict_items([('une clé', 'une valeur'),

('une autre clé', 'une autre valeur')])

I Comme toujours, on peut transtyper le résultat ;

15 / 21

(43)

Dictionnaires : accès aux éléments

I Les méthodes suivantes du dictionnairedicopermettent d’accéder :

1. aux clés :dico.keys(); 2. aux valeurs :dico.values(); 3. aux deux :dico.items();

Exemple

>>> dico = {"une clé": "une valeur",

"une autre clé": "une autre valeur"}

>>> dico.keys()

dict_keys(['une clé', 'une autre clé'])

>>> dico.values()

dict_values(['une valeur', 'une autre valeur'])

>>> dico.items()

dict_items([('une clé', 'une valeur'),

('une autre clé', 'une autre valeur')])

I Comme toujours, on peut transtyper le résultat ;

(44)

Dictionnaires : accès aux éléments

I Les méthodes suivantes du dictionnairedicopermettent d’accéder :

1. aux clés :dico.keys(); 2. aux valeurs :dico.values(); 3. aux deux :dico.items();

Exemple

>>> dico = {"une clé": "une valeur",

"une autre clé": "une autre valeur"}

>>> dico.keys()

dict_keys(['une clé', 'une autre clé'])

>>> dico.values()

dict_values(['une valeur', 'une autre valeur'])

>>> dico.items()

dict_items([('une clé', 'une valeur'),

('une autre clé', 'une autre valeur')])

I Comme toujours, on peut transtyper le résultat ;

15 / 21

(45)

Dictionnaires : accès aux éléments

I Les méthodes suivantes du dictionnairedicopermettent d’accéder :

1. aux clés :dico.keys(); 2. aux valeurs :dico.values(); 3. aux deux :dico.items();

Exemple

>>> dico = {"une clé": "une valeur",

"une autre clé": "une autre valeur"}

>>> dico.keys()

dict_keys(['une clé', 'une autre clé'])

>>> dico.values()

dict_values(['une valeur', 'une autre valeur'])

>>> dico.items()

dict_items([('une clé', 'une valeur'),

(46)

Opérations sur les dictionnaires

Dans le tableau suivant D est un dictionnaire, x est une clé et y est une valeur :

dict() dictionnaire vide len(D) nombre de clés D[x] = y affecte y à D[x] D[x] renvoie la valeur de x del D[x] efface le couple x in D teste si x est une clé

(x, D[x])

D.keys() la liste des clés D.values() la liste des valeurs D.items() la liste des

couples (clé,valeur)

16 / 21

(47)

Modifiables et non-modifiables

On a vu jusqu’ici des objets de deux catégories :

Types non-modifiables bool, int, float, str, tuple, frozenset

Types modifiables list, set, dict

Pour passer d’un type à l’autre, on peut par exemple utiliser la

fonction tuple() pour transformer une liste (modifiable) en

un tuple (non-modifiable)

(48)

Modifiables et non-modifiables

I Quand utiliser une structure modifiable, et quand utiliser une structure non-modifiable ?

I Ça dépend de vos besoins et de vos contraintes ;

I Il arrive qu’on n’ait pas le choix (éléments d’un set, clés d’un dictionnaire, ...) ;

I Attention : la discussion de la fois passée concernant l’effet d’une fonction sur un paramètre modifiable s’applique aux itérables modifiables vus aujourd’hui !

18 / 21

(49)

Itérer sur des structures plus complexes

I Tirez parti de la syntaxe agréable du for pour rendre votre code plus lisible ;

I Par exemple, si vous encodez un polygone à l’aide d’une liste de points, n’écrivez pas :

Exemple

print("Mon polygone contient les points suivants: ") for point in liste_points:

print("x =", point[0], ", y =", point[1])

I Écrivez plutôt :

Exemple

print("Mon polygone contient les points suivants: ") for x, y in liste_points:

print("x =", x, ", y =", y)

(50)

Itérer sur des structures plus complexes

I Tirez parti de la syntaxe agréable du for pour rendre votre code plus lisible ;

I Par exemple, si vous encodez un polygone à l’aide d’une liste de points, n’écrivez pas :

Exemple

print("Mon polygone contient les points suivants: ") for point in liste_points:

print("x =", point[0], ", y =", point[1])

I Écrivez plutôt :

Exemple

print("Mon polygone contient les points suivants: ") for x, y in liste_points:

print("x =", x, ", y =", y)

19 / 21

(51)

Itérer sur des structures plus complexes

I Tirez parti de la syntaxe agréable du for pour rendre votre code plus lisible ;

I Par exemple, si vous encodez un polygone à l’aide d’une liste de points, n’écrivez pas :

Exemple

print("Mon polygone contient les points suivants: ") for point in liste_points:

print("x =", point[0], ", y =", point[1])

I Écrivez plutôt :

Exemple

print("Mon polygone contient les points suivants: ") for x, y in liste_points:

print("x =", x, ", y =", y)

(52)

Itérer sur des structures plus complexes

I Tirez parti de la syntaxe agréable du for pour rendre votre code plus lisible ;

I Par exemple, si vous encodez un polygone à l’aide d’une liste de points, n’écrivez pas :

Exemple

print("Mon polygone contient les points suivants: ") for point in liste_points:

print("x =", point[0], ", y =", point[1])

I Écrivez plutôt :

Exemple

print("Mon polygone contient les points suivants: ") for x, y in liste_points:

print("x =", x, ", y =", y)

19 / 21

(53)

Itérer sur des structures plus complexes

I Tirez parti de la syntaxe agréable du for pour rendre votre code plus lisible ;

I Par exemple, si vous encodez un polygone à l’aide d’une liste de points, n’écrivez pas :

Exemple

print("Mon polygone contient les points suivants: ") for point in liste_points:

print("x =", point[0], ", y =", point[1])

I Écrivez plutôt : Exemple

print("Mon polygone contient les points suivants: ")

(54)

Itérer sur des dictionnaires

I On pourra ainsi itérer sur les dictionnaires de plusieurs manières :

Exemple

mon_dico = ... # (initialisation)

for cle in mon_dico: # ou mon_dico.keys()

print("cle =", cle, ", valeur =", mon_dico[cle]) for cle, valeur in mon_dico.items():

print("cle =", cle, ", valeur =", valeur)

I La règle est la même que pour les listes : on n’a besoin des [] que pour modifier les éléments ;

20 / 21

(55)

Attention aux dictionnaires vides

I Python 3 nous autorise à créer des dictionnaires vides avec {} ;

I Ceci est déconseillé : en effet, {1} est un ensemble contenant 1, tandis que {} n’est pas un ensemble vide mais un dictionnaire vide ;

I Dès lors, le test ensemble == {} ne marchera pas pour vérifier si un ensemble donné est vide ;

I Cette notation étant source de confusion, il est donc

préférable de l’éviter ;

Références

Documents relatifs

Afficher

Lorsqu'une valeur est affectée à une variable chaîne de caractères, on procède comme pour un type numérique mais cette valeur doit être mis entre deux quotes simples.

Nous avons déjà parlé du QuickSort, dont la clé est l’idée qu’on peut trouver en temps linéaire la position qu’aura un élément quelconque, appelé pivot, dans le ta- bleau

On appelle arbre binaire (au maximum deux enfants par noeud) de recherche (ABR) un arbre ayant la propriété que chaque noeud ait une valeur au moins aussi grande que tout noeud

On appelle arbre binaire (au maximum deux enfants par noeud) de recherche (ABR) un arbre ayant la propriété que chaque noeud ait une valeur au moins aussi grande que tout noeud

Il est possible qu’un champ d’une structure soit un tableau On peut faire des tableaux dont les éléments sont des structures.. Le principe de

Objectifs: Acquérir les notions fondamentales sur les structures de données et algorithmes ainsi que leur analyse à travers le langage de programmation C++.. Contenu

 Le choix d’un algorithme peut déterminer le type de la structure de données, et des fois l’adaptation d’une structure de données particulière peut déterminer