Foros del Web » Programando para Internet » Python »

Introduciendo datos a lista de listas

Estas en el tema de Introduciendo datos a lista de listas en el foro de Python en Foros del Web. Hola que tal maestros, espero pudieran ayudarme, estoy tratando de meter datos a una lista de listas. He aqui el código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Funcion: ...
  #1 (permalink)  
Antiguo 02/09/2009, 10:04
 
Fecha de Ingreso: diciembre-2007
Ubicación: Frente al ordenador...
Mensajes: 139
Antigüedad: 17 años
Puntos: 1
Introduciendo datos a lista de listas

Hola que tal maestros, espero pudieran ayudarme, estoy tratando de meter datos a una lista de listas.
He aqui el código:

Código Funcion:
Ver original
  1. def cajas(num):
  2.     keri = 'SELECT * FROM table1 ORDER BY Fecha DESC;'
  3.     C.execute(keri)
  4.     reg = C.fetchall() #Aquí reg seria algo como (datetime.date(2009, 8, 26), 14L, 18L, 21L, 22L, 28L)
  5.     caja=[] #Esta es la lista que quiero regresar, donde contenga algo asi [0,1,2,2] en la cual los numeros indican la cantidad de veces que caen los numeros de reg en las "cajas", que vienen siendo los rangos descritos a continuación...
  6.  
  7.     for k in range(num):
  8.         for i in range(num):
  9.             if reg[k][i] in range(0,8):
  10.                 caja[i][0]+=1
  11.  
  12.             if reg[k][i] in range(7,15):
  13.                 caja[i][1]+=1
  14.  
  15.             if reg[k][i] in range(14,22):
  16.                 caja[i][2]+=1
  17.  
  18.             if reg[k][i] in range(21,29):
  19.                 caja[i][3]+=1
Pero me sale un error, en donde dice IndexError: list index out of range, no se a que se deba o si estoy inicializando mal la lista caja[], que obviamente quiero que sea una lista de listas....gracias de antemano
__________________
----------------------------------------------------------
Algunas cosas simplemente son bellas...por que uno no puede tenerlas...
  #2 (permalink)  
Antiguo 02/09/2009, 18:37
AxL456
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Introduciendo datos a lista de listas

hola..

leyendo por encima el codigo, el primer problema que veo son los formatos de las variables reg y caja

para que dicho codigo corra adecuadamente tu tienes que asegurarte que tanto reg como caja tengan una longitud mayor o igual a sum (la variable de entrada para la funcion cajas) y que los valores dentro de ambas variables sean listas anidadas, te pongo un ejemplo para que lo veas:

Si sum es igual a 3 entonces:
Código Python:
Ver original
  1. caja = [[x,x,x,x],
  2.         [x,x,x,x],
  3.         [x,x,x,x]]
  4.  
  5. reg=   [[x,x,x],
  6.         [x,x,x],
  7.         [x,x,x]]

Si sum es igual a 5 entonces:
Código Python:
Ver original
  1. caja = [[x,x,x,x],
  2.         [x,x,x,x],
  3.         [x,x,x,x],
  4.         [x,x,x,x],
  5.         [x,x,x,x]]
  6.  
  7. reg=   [[x,x,x,x,x],
  8.         [x,x,x,x,x],
  9.         [x,x,x,x,x],
  10.         [x,x,x,x,x],
  11.         [x,x,x,x,x]]

Ya puedes ver el patron, pero en resumen caja podrias verlo como una matriz de dimension SUMx4 y reg una matriz SUMxSUM

siempre que estos valores se queden cortos se va a producir un error "index out of range"

Última edición por AxL456; 02/09/2009 a las 21:05
  #3 (permalink)  
Antiguo 03/09/2009, 13:33
 
Fecha de Ingreso: diciembre-2007
Ubicación: Frente al ordenador...
Mensajes: 139
Antigüedad: 17 años
Puntos: 1
Respuesta: Introduciendo datos a lista de listas

Ok, ya entendi el concepto, pero ahora entonces como inicializo la variable caja:

Código Inicia:
Ver original
  1. caja=[num]??
  2. caja=[[num]*num]??
__________________
----------------------------------------------------------
Algunas cosas simplemente son bellas...por que uno no puede tenerlas...
  #4 (permalink)  
Antiguo 03/09/2009, 17:30
AxL456
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Introduciendo datos a lista de listas

Cita:
Iniciado por Kinopio Ver Mensaje
Ok, ya entendi el concepto, pero ahora entonces como inicializo la variable caja:

Código Inicia:
Ver original
  1. caja=[num]??
  2. caja=[[num]*num]??
eso depende de exactamente que es lo que deseas hacer..

me imagino que deseas que la variable caja se inicialice con puros ceros, si es asi una manera en que puedes hacerlo es la siguiente:
Código Python:
Ver original
  1. def init_caja(w):
  2.     caja=[]
  3.     for i in range(w):
  4.         caja.append([])
  5.         for q in range(4):
  6.             caja[i].append(0)
  7.     return caja

de todas maneras tienes que asegurarte que la variable reg tambien tenga el formato adecuado..
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 08:51.