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"


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
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