1. Croire que b = a recopie la table
2 points, et toutes les questions suivantes qui utilisent la table d'origineCe qu'il ne faut pas écrire
« Je fais copie = table puis je modifie copie, comme ça la table d'origine n'est pas touchée. »
Ce qu'il faut écrire
« copie = table ne crée aucun objet : les deux noms désignent la même liste. Pour dupliquer les lignes, j'écris copie = [dict(l) for l in table]. »
Pourquoi : En Python, une affectation lie un nom à un objet, elle ne duplique jamais l'objet, quel que soit son type. Avec un nombre ou une chaîne, le partage ne se voit pas : ces objets sont immuables, on ne peut que lier le nom à un AUTRE objet, et l'autre nom n'en sait rien. Avec une liste, un dictionnaire ou un objet, une modification passe par l'objet partagé et se voit par les deux noms.