Forum Python

Please or S’enregistrer to create posts and topics.

Problème : Liste se remplit plusieurs fois dans une boucle

Bonjour,
Je travaille sur un programme pour générer une liste de listes où chaque sous-liste contient un nombre croissant d'éléments. Voici mon code :

resultat = []
sous_liste = []
for i in range(5):
sous_liste.append(i)
resultat.append(sous_liste)
print(resultat)

Je m'attendais à ce que resultat contienne cinq sous-listes différentes, mais voici ce que j'obtiens :

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
Pourquoi toutes les sous-listes sont-elles identiques ?"

Salut Rachid,

Le problème vient du fait que la liste sous_liste est ajoutée par référence. Vous ajoutez le même objet plusieurs fois. Pour créer une copie indépendante, utilisez la méthode suivante :

resultat = []
for i in range(5):
    sous_liste = [j for j in range(i + 1)]
    resultat.append(sous_liste)
print(resultat)