generando nombres de variables en fly en python

¿Hay alguna manera de que pueda generar nombres de variables en python en un bucle y asignarles valores? Por ejemplo, si tengo

prices = [5, 12, 45] 

quiero

 price1 = 5 price2 = 12 price3 = 45 

¿Puedo hacer esto en un bucle o algo en lugar de asignar manualmente el price1 = prices[0] , price2 = prices[1] etc.

Gracias.

EDITAR

Mucha gente me sugirió que escribiera una razón para exigir esto. Primero, ha habido momentos en los que he pensado que esto puede ser más conveniente que usar una lista … No recuerdo exactamente cuándo, pero creo que he pensado usar esto cuando hay muchos niveles de anidación. Por ejemplo, si uno tiene una lista de listas de listas, definir las variables de la forma anterior puede ayudar a reducir el nivel de anidamiento. En segundo lugar, hoy pensé en esto al intentar aprender a usar Pytables. Acabo de encontrarme con Pytables y vi que al definir la estructura de una tabla, los nombres y tipos de columna se describen de la siguiente manera:

 class TableFormat(tables.IsDescription): firstColumnName = StringCol(16) secondColumnName = StringCol(16) thirdColumnName = StringCol(16) 

Si tengo 100 columnas, escribir el nombre de cada columna explícitamente parece mucho trabajo. Entonces, me pregunté si hay una manera de generar estos nombres de columna sobre la marcha.

Si realmente desea crearlos sobre la marcha, puede asignarlos al dict que devuelve globals() o locals() según el espacio de nombres en el que desee crearlos:

 globals()['somevar'] = 'someval' print somevar # prints 'someval' 

Pero no recomendaría hacer eso. En general, evite variables globales. Usar locals() menudo solo oscurece lo que realmente estás haciendo. En su lugar, crea tu propio dictado y asignalo.

 mydict = {} mydict['somevar'] = 'someval' print mydict['somevar'] 

Aprende el zen python; corre esto y muévelo bien

 >>> import this 

Aunque no veo mucho punto, aquí está:

 for i in xrange(0, len(prices)): exec("price%d = %s" % (i + 1, repr(prices[i]))); 

En un objeto, puede lograr esto con setattr

 >>> class A(object): pass >>> a=A() >>> setattr(a, "hello1", 5) >>> a.hello1 5 

Tengo tu problema, y ​​aquí está mi respuesta:

 prices = [5, 12, 45] list=['1','2','3'] for i in range(1,3): vars()["prices"+list[0]]=prices[0] print ("prices[i]=" +prices[i]) 

así que mientras imprime:

 price1 = 5 price2 = 12 price3 = 45 

Otro ejemplo, que es realmente una variación de otra respuesta , en que también usa un diccionario:

 >>> vr={} ... for num in range(1,4): ... vr[str(num)] = 5 + num ... >>> print vr["3"] 8 >>> 

un poco largo, funciona supongo …

 prices = [5, 12, 45] names = [] for i, _ in enumerate(prices): names.append("price"+str(i+1)) dict = {} for name, price in zip(names, prices): dict[name] = price for item in dict: print(item, "=", dict[item])