Crear variables en masa Python

publicado por: Anonymous

¿Existe alguna forma en Python de asignar valores a variables sin teclear especificamente el nombre de la variable? Me explico con un ejemplo, lo que me gustaría hacer es algo como:

list = [1,2,3,4,5]

for e in list:

     1 + "variable" = XXX

Y tener de output:

1variable = XXX

2variable = XXX

3variables = XXX

Creo que se entiende la cuestión. Soy novato y no tengo claros algunos conceptos. Un saludo y gracias.

solución

Para empezar, los nombres de variables no pueden comenzar con números, después, sugeriría mejor que utilizaras un diccionario para almacenar valores con claves de nombre variable, o un objeto, según la necesidad del proyecto.

Pero de todas maneras, respondiendo directamente a tu pregunta, una forma que se me ocurre es con la función exec, por ejemplo.

>>> for i in range(1,10):
...     exec "var%s = %s" % (i, i*i)
...
>>> for i in range(1,10):
...     exec "print var" + str(i)
...
1
4
9
16
25
...

Otra forma que se me ocurre es usando diccionario globals, que contiene las variables globales.

>>> for i in range(1,10):
...     globals()["var" + str(i)] = i*i
...
>>> for i in range(1,10):
...     print globals()["var" + str(i)]
...
1
4
9
16
25
...
>>> for i in range(1,10):
...     exec "print var" + str(i)
...
1
4
9
16
25
...

Para los objetos puedes usar algo de metaprogramación sencilla como:

>>> class Lista(object):
...     pass

>>> i = 1

>>> lista1 = Lista()
>>> for elemento in ["jitomates", "mantequilla", "huevos"]:
...     setattr(lista1, "producto" + str(i), elemento)
...     i = i + 1
...
>>> lista1.producto1
'jitomates'
>>> lista1.producto2
'mantequilla'

Aunque se pueden hacer toda clase de locuras, creo que es mejor que utilices diccionarios.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *