Re: añadir el valor (entero) de una variable al nombre de otra variable
Chema Cortes
pych3m4 en gmail.com
Lun Dic 24 05:05:39 CET 2007
El 24/12/07, Kike Cabrera <kikecalpe en gmail.com> escribió:
> hola a todos!
> estoy haciendo un programa que compara listas, incluidas en otra lista
> mayor, y las distribuye segun su contenido en grupos. el caso es que los
> grupos se van 'creando' segun van haciendo falta, así que hice un contador
> de los grupos que tengo para que cuando hace falta otro grupo solo tengo que
> añadir el contador al nombre de la variable grupo. pero mi problema es que
> todavía no se como puedo concatenar el nombre de la variable 'grupo' con el
> valor de la variable 'cuentagrupos' para crear los nuevos grupos. por si no
> me he explicado pongo un ejemplo.
>
> listamayor=[[a,b,c,d,e],[b,c,b,a,c],[d,c,a,b,b]]
> grupo0=[listamayor[1]] #el primer grupo se crea siempre, y siempre contendrá
> al menos el primer elemento de listamayor.
> cuentagrupos=1
> for e in range(cuentagrupos):
> for a in range(grupo+e): #FALTA. hay q unir el nombre de variable
> grupo con el valor de 'e', ej. grupo0.
> lista=listamayor.pop()
> if comparalistas(grupo+e[a], lista): grupo+e.append(columna) #si
> compara(x,y) es verdadero añade columna al final del grupoe.
> elif e==cuentaGrupos-1: #si se han comparado todos los grupos se
> crea uno nuevo y se le añade el valor de columna. además se incrementa
> cuentagrupos.
> grupo+cuentaGrupos=[columna] #FALTA. unir variable grupo con
> valor de 'cuentaGrupos' para que quede algo como grupo1=[columna]
> cuentaGrupos+=1
>
> grupos=grupos.append(grupo+e) #FALTA. unir nombre variable grupo
> con valor de 'e', ej. grupo0.
>
> estoy seguro de que hay errores y mil maneras mejores de hacerlo
> (escribiendo esto he encontrado un error de planteamiento), sin embargo
> apenas llevo aprendiendo a programar un mes y pico, y estoy empezando a
> desenvolverme. se aceptan consejos de todo tipo, pero sobre todo lo que
> busco es saber como se hace lo que he planteado.
Mi consejo, así sin mirar más, es que los grupos los crees como una
lista de listas y la vayas agrandando a medida que necesites nuevos
grupos:
grupos=[]
#el primer grupo, o sea, grupo0:
grupos.append(listamayor[0])
¡Cuidado con los índices de las listas! En python se empieza desde 0,
no desde 1.
No necesitarías un contador "cuentagrupos", ya que puedes usar
len(grupos) en su lugar, y otras optimizaciones que seguro que
consigues fácilmente (si no te convence la soluciones que obtengas, no
dudes en preguntar por aquí).
No sé si quieres insistir con tu idea original, pero por contestarte a
tu pregunta se pueden crear nuevas variables accediendo a los
diccionarios de variables globales y locales. Por ejemplo, de la
siguiente manera crearíamos 10 variables globales, desde "grupo0"
hasta "grupo9" :
G=globals()
for i in xrange(10):
G["grupo%d"%i]=0
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es