copie de liste

copie de liste - Python - Programmation

Marsh Posté le 21-11-2008 à 13:29:40    

Hello,
 
 
liste 1 = [....]
liste 2 = liste 1
 
le problème c'est que ça ne crée pas une nouvelle liste mais juste un pointeur et que lorsque je modifie la liste 2 ca me modifie aussi la liste 1
comment faire à par copier une par une toutes les valeurs de la liste, es-ce qu il existe une fonction genre append() ?
 
Merci d'avance
 
Handerwaves

Reply

Marsh Posté le 21-11-2008 à 13:29:40   

Reply

Marsh Posté le 21-11-2008 à 14:04:26    

handerwaves a écrit :

Hello,
 
 
liste 1 = [....]
liste 2 = liste 1
 
le problème c'est que ça ne crée pas une nouvelle liste mais juste un pointeur et que lorsque je modifie la liste 2 ca me modifie aussi la liste 1
comment faire à par copier une par une toutes les valeurs de la liste, es-ce qu il existe une fonction genre append() ?
 
Merci d'avance
 
Handerwaves


list fait office de constructeur de base, convertisseur et constructeur par recopie:

Code :
  1. >>> a = range(5)
  2. >>> a
  3. [0, 1, 2, 3, 4]
  4. >>> a.append(5)
  5. >>> a
  6. [0, 1, 2, 3, 4, 5]
  7. >>> b = a
  8. >>> a, b
  9. ([0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5])
  10. >>> a.append(6)
  11. >>> a, b
  12. ([0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6])
  13. >>> b = list(a)
  14. >>> a, b
  15. ([0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6])
  16. >>> a.append(7)
  17. >>> a, b
  18. ([0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6])
  19. >>>


Accessoirement, la terminologie est mauvaise, Python n'a pas de pointeurs, Python a des labels sur des objets, aka des références.
 
Faire b = a c'est simplement créer un label "b" référençant le même objet que le label "a"


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 22-11-2008 à 00:05:53    

a = b[:]

Reply

Marsh Posté le 01-12-2008 à 14:00:53    

Oui d'ailleurs c'est quoi le plus "propre" ?
a = b[:] (que j'utilise aussi)
ou a = list(b) ?

Reply

Marsh Posté le 01-12-2008 à 16:34:36    

ben ça fait pas la même chose. [:] ne marche que si b est une liste.

Reply

Marsh Posté le 01-12-2008 à 17:47:59    

Oui, je demandais pour le cas où b est une liste.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed