Problème avec l'instruction del et les listes

Résolu/Fermé
Ilioo Messages postés 42 Date d'inscription dimanche 25 décembre 2011 Statut Membre Dernière intervention 13 février 2017 - 14 mars 2015 à 12:11
Ilioo Messages postés 42 Date d'inscription dimanche 25 décembre 2011 Statut Membre Dernière intervention 13 février 2017 - 14 mars 2015 à 20:12
Bonjour,
Je commence tout juste le python et j'aimerais vous demander de l'aide à propos d'un problème.
Dans une de mes fonctions, j'ai une liste en entrée. Au sein de ma fonction je veux bidouiller deux listes qui au départ sont identiques à celle de l'entrée.
Le problème, c'est que lorsque j'utilise l'instruction del sur une des deux listes, les deux listes sont touchées !
Voici un exemple pour illustrer :


J'aimerais savoir ce qui se passer, et surtout comment je peux contourner le problème.
Je précise que je code normalement sur Ubuntu, mais je suis souvent contrainte d'avancer sur Windows en parallèle.

Merci d'avance.

1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
14 mars 2015 à 17:06
'lut, tu viens de toucher a un problème inhérent a certains langages: les listes, en Python, sont passées par référence; autrement dit, quand on utilise une opération d'attribution, la liste n'est pas copiée, mais la variable voulue y est associée.
Ce n'est pas le cas d'autres types comme
float
ou
int
.
Il faut, pour la copier, soit passer par le constructeur de
list
:
a = [1, 2, 3]
b = list(a)
<...>
Soit l'opérateur de découpage, qui sans paramètre découpera la liste du début à la fin, la copiant, effectivement:
a = [1, 2, 3]
b = a[:]
<...>
0
Ilioo Messages postés 42 Date d'inscription dimanche 25 décembre 2011 Statut Membre Dernière intervention 13 février 2017 13
14 mars 2015 à 20:12
Merci beaucoup !! :)
0