Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/06/2009, 17:54
inedit00
 
Fecha de Ingreso: junio-2009
Mensajes: 2
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Listas tridimensionales y sus copias, facil respuesta.

Nota: no se me asusten, parece largo pero se lee en un momento. Gracias por ayudar.
Tengo un problema que no se como solucionar. El caso es que tengo una lista de tres dimensiones ( lista[][][] ), de la cual quiero hacer una copia y una modificación. Al final tiene que quedarme la lista original y la lista modificada. Bien. Que tengo? Pues el siguiente codigo para ilustrar mi problema:

Código python:
Ver original
  1. import copy
  2. #EJEMPLO 1, QUE FUNCIONA ( per no me sirve de nada )
  3. #Hecha la copia, si se cambia algun elemento de la lista no se modifica el original. Perfecto
  4. a=[]
  5. a =[1,2,3]
  6. b = copy.copy(a)
  7. b[0] = 'helloworld'
  8. print a
  9. print b
  10. #Resultado:
  11. #[1, 2, 3]
  12. #['helloworld', 2, 3]

Código python:
Ver original
  1. #EJEMPLO 2, QUE NO FUNCIONA
  2. #Creamos nuestro array tridimensional de prueba. Lo imprimimos. Hacemos la copia. Cambiamos algo y volvemos a imprimir. Y que tenemos? Pues tanto el array original como su copia MODIFICADOS.
  3. m=2
  4. count=0
  5. c = []
  6. for i in range(0,m):
  7.     b = []
  8.     for j in range(0,m):
  9.         a = []
  10.         for k in range(0,m):
  11.             a.append(count)
  12.             count+=1
  13.         b.append(a)
  14.     c.append(b)
  15.  
  16. print c
  17. d = copy.copy(c)
  18. d[0][0][0] = 'hello world'
  19. print c
  20. print d
  21.  
  22. #Resultado :(
  23. #[[[0, 1], [2, 3]], [[4, 5], [6, 7]]]
  24. #[[['hello world', 1], [2, 3]], [[4, 5], [6, 7]]]    <<<< :S
  25. #[[['hello world', 1], [2, 3]], [[4, 5], [6, 7]]]   <<<<< :S

Alguna idea? Se acepta pulpo como animal de compañía. Gracias de antemano.

Última edición por AlvaroG; 01/07/2009 a las 14:20