Problème : Liste se remplit plusieurs fois dans une boucle
Citation de Rachid Amri le 23 novembre 2024, 13 h 51 minBonjour,
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 ?"
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 ?"
Citation de dominator le 23 novembre 2024, 14 h 53 minSalut 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)
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)