You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: notebooks/exos/basic/EXO-class-sort-hash-nb.md
+20-9Lines changed: 20 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,31 +27,42 @@ nbhosting:
27
27
28
28
## hashable
29
29
30
-
lorsqu'on a vu les types prédéfinis, on a dit qu'on ne pouvait utiliser comme clés de dictionnaire que des éléments **non mutables**
30
+
lorsqu'on a vu les types prédéfinis, on a dit qu'on ne pouvait utiliser comme
31
+
clés de dictionnaire que des éléments **non mutables**
31
32
32
-
en réalité, les éléments qui peuvent servir de clé dans un dictionnaire (ou être mis dans un ensemble, c'est le même critère) sont appelés des objets ***hashables***
33
-
34
-
et, comme pour tous les autres traits du langage, on peut assez facilement rendre une classe *hashable**
33
+
cela est vrai pour les types prédéfinis du langage, mais pour nos types à nous
34
+
(les classes, donc), c'est **plus subtil**:
35
+
de manière générale, les éléments qui peuvent servir de clé dans un dictionnaire (ou être
36
+
mis dans un ensemble, c'est le même critère) sont appelés des objets
37
+
***hashables***
38
+
et, comme pour tous les autres traits du langage, on peut assez facilement **rendre une classe *hashable***
35
39
36
40
## sortable
37
41
42
+
dans une veine similaire:
38
43
pour trier une liste d'objets, on peut customiser l'ordre du tri en passant une fonction
39
44
40
45
`sorted(L, key=)`
41
46
42
47
**mais aussi**, il y a une autre façon
43
-
si on veut trier des éléments homogènes - tous de la même classe - il suffit de définir un ordre sur les éléments de la classe
48
+
si on veut trier des éléments homogènes - tous de la même classe - on peut assez
49
+
facilement **définir un ordre** sur les éléments de la classe
44
50
45
51
## notre prétexte
46
52
47
-
pour s'entrainer, nous allons simplement créer une classe
53
+
pour s'entrainer, nous allons simplement créer une classe`Student`:
48
54
49
55
- qui modélise un élève avec un nom, un prénom, et pour faire simple une note
50
56
- cette note peut évoluer au cours du temps (par ex. une moyenne générale qui change au cours du trimestre)
51
57
- on suppose qu'il n'y a pas deux élèves avec le même nom **et** le même prénom
52
-
- on veut pouvoir, pour écrire la classe `Classe`, créer un ensemble d'élèves
53
-
- et trier cet ensemble d'élèves par moyenne générale
54
-
- et pouvoir créer un dictionnaire qui a les élèves comme clés
58
+
59
+
on veut pouvoir ensuite écrire une classe `Classe`:
60
+
61
+
- qui contient un **ensemble** (au sens `set` Python) d'élèves
62
+
- et/ou un **dictionnaire** (au sens `dict` Python) qui a les élèves comme clés
63
+
- et qui sache enfin trier cet ensemble d'élèves par moyenne générale
64
+
65
+
quelque chose dans le genre de (à compléter évidemment):
0 commit comments