Forum Python

Please or S’enregistrer to create posts and topics.

Problème : Ajouter un élément à une liste modifie toutes les références

Bonjour,
J'essaie de créer une liste de listes et d'ajouter des éléments, mais cela produit un comportement étrange :
sous_liste = [0] * 3
grande_liste = [sous_liste] * 4
grande_liste[0][0] = 1
print(grande_liste)

Je m'attendais à avoir [1, 0, 0] dans la première sous-liste, mais toutes les sous-listes sont modifiées !"

Réponse à votre problème bik :
Le problème est que [sous_liste] * 4 crée quatre références au même objet en mémoire. Lorsque vous modifiez une sous-liste, toutes sont affectées.
Voici la solution : utilisez une compréhension de liste pour créer des sous-listes indépendantes :

grande_liste = [[0] * 3 for _ in range(4)]
grande_liste[0][0] = 1
print(grande_liste)