Foros del Web » Programando para Internet » Python »

matriz + random (inicilizado) + for (=perdida de posiciones?)

Estas en el tema de matriz + random (inicilizado) + for (=perdida de posiciones?) en el foro de Python en Foros del Web. Buenas tardes tengo una duda sobre una matriz : Lleno la matriz con un random.randint (1,9) con 2 fors para la matriz es decir : ...
  #1 (permalink)  
Antiguo 05/02/2012, 07:14
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
matriz + random (inicilizado) + for (=perdida de posiciones?)

Buenas tardes tengo una duda sobre una matriz :

Lleno la matriz con un random.randint (1,9) con 2 fors para la matriz es decir :

3 4 5 6
2 3 4 5
1 4 6 7
1 4 6 7

tendría que dar esto :

vector[0][0]=3
vector[1][1]=3
vector[2][2]=6
vector[3][3]=7

Pero me da

vector[0][0]=1
vector[1][1]=4
vector[2][2]=6
vector[3][3]=7

Que hago mal ? :S

Lo bueno es que antes de perder las posiciones con el random lo declaro arriba 2 fors y abajo hago 2 fors + para cojer esas posiciones pero nanai de la xina :)
  #2 (permalink)  
Antiguo 05/02/2012, 07:35
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: matriz + random (inicilizado) + for (=perdida de posiciones?)

Pon el código que estás usando para que veamos dónde está el error.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 05/02/2012, 09:41
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: matriz + random (inicilizado) + for (=perdida de posiciones?)

Cita:
Iniciado por _cronos2 Ver Mensaje
Pon el código que estás usando para que veamos dónde está el error.
Saludos (:
Perdón por tardar :)

Código Python:
Ver original
  1. import random
  2. N=10
  3.  
  4. n=[[0]*N]*N
  5.  
  6. for x in range (0,N,1):
  7.     for i in range (0,N,1):
  8.         if(x==i):
  9.             n[x][i]=0
  10.         else:
  11.             n[x][i]=random.randint(1,9)
  12.         print n[x][i],
  13.     print
  14.  
  15. print n[0][0]
  16. print n[1][1]
  17. print n[2][2]
  18. print n[3][3]

Ahora lo he hecho con dos fors por provar :) , ahora pierdo las posiciones si o si :) alguna ayuda? :)

Última edición por drakgoku1; 05/02/2012 a las 10:18
  #4 (permalink)  
Antiguo 05/02/2012, 10:41
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: matriz + random (inicilizado) + for (=perdida de posiciones?)

Lo que pasa es como inicias tu matriz.
Código Python:
Ver original
  1. [[0]*N]*N
La primera expresión [0] * N, devuelve una lista con N ceros, y los ceros al ser inmutables no pasa nada. Pero la segunda expresión devuelve N copias de listas con N ceros y las listas como es bien sabido, son mutables. Por eso si imprimes tu matriz veras que todas las filas son iguales.

Para evitar esto debes de hacer lo siguiente:
Código Python:
Ver original
  1. [[0]*N for i in range(N)]
Para iniciar tu matriz.
  #5 (permalink)  
Antiguo 05/02/2012, 10:51
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: matriz + random (inicilizado) + for (=perdida de posiciones?)

Cita:
Iniciado por razpeitia Ver Mensaje
Lo que pasa es como inicias tu matriz.
Código Python:
Ver original
  1. [[0]*N]*N
La primera expresión [0] * N, devuelve una lista con N ceros, y los ceros al ser inmutables no pasa nada. Pero la segunda expresión devuelve N copias de listas con N ceros y las listas como es bien sabido, son mutables. Por eso si imprimes tu matriz veras que todas las filas son iguales.

Para evitar esto debes de hacer lo siguiente:
Código Python:
Ver original
  1. [[0]*N for i in range(N)]
Para iniciar tu matriz.
Exactamente la instrucción que hace ?

Es que lo quiero para un ejercicio y tu condicion funciona de perlas , pero sin eso no puedo ? , es decir más simple :)

Creo entender que inicializas el vector 0 * N(posiciones) y corres a llegar a N ?

I can't understand correcly , please tell me :)
  #6 (permalink)  
Antiguo 05/02/2012, 10:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: matriz + random (inicilizado) + for (=perdida de posiciones?)

Cita:
Iniciado por drakgoku1 Ver Mensaje
Exactamente la instrucción que hace ?

Es que lo quiero para un ejercicio y tu condicion funciona de perlas , pero sin eso no puedo ? , es decir más simple :)

Creo entender que inicializas el vector 0 * N(posiciones) y corres a llegar a N ?

I can't understand correcly , please tell me :)
Bueno es lo mas sencillo que hay (o por lo menos lo mas sencillo que se me ocurrió).

Lo que hace es un compresión de listas. Básicamente una matriz es una lista de listas, donde el primer indice es la fila y la segunda la columna.

Etiquetas: matriz, perdida, random
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:39.