un professeur veut relever ses notes⚓︎
Un professeur a relevé la liste des notes obtenues dans un groupe à une évaluation. (liste_1
).
Il désire relever toutes les notes d’1 point, mais il veut garder pour lui la liste originale.
Voici son script et le résultat obtenu à l’exécution :
Testez
liste_2 = liste_1
🌵 On observe que le professeur a « perdu » la liste originale liste_1
, qui est devenu identique à la liste_2
.
👉 En effet, tout se passe comme si l’instruction liste_2 = liste_1
donnait deux noms différents au même objet.
liste_2
n’est pas une nouvelle liste.
Il y a plusieurs syntaxes possibles pour remédier à ce problème : en voici quelques unes.
Testez
liste_2 = list(liste_1)
# Tests
(insensible à la casse)(Ctrl+I)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)
Testez
liste_2 = liste_1[:]
# Tests
(insensible à la casse)(Ctrl+I)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)
Testez
liste_2 = liste_1.copy()
# Tests
(insensible à la casse)(Ctrl+I)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)
Testez
liste_2 = [note for note in liste_1]
avec une liste en compréhension
# Tests
(insensible à la casse)(Ctrl+I)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)
Un autre exemple avec des fruits :⚓︎
🌵 Comme on peut le voir, lors de sa création, fruits_2
pointe vers le même objet de type list
: fruits_1
.
😏 Le fait de modifier fruits_2
, modifie donc forcément fruits_1
.
👉 Ce mécanisme est très important et il faudra le garder à l'esprit.
# Tests
(insensible à la casse)(Ctrl+I)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)