Vale, he tenido que leer unas 10 veces hasta que lo he entendido
Tú quieres algo como esto:
Código:
textos = [texto1, texto2, texto3]
Donde texto1, texto2, texto3 son variables, pero tu código genera algo como esto:
Código:
textos = ["texto1", "texto2", "texto3"]
Bueno, puedes transformar un array en el otro con este comando:
Código:
mylocals = locals()
textos = map(lambda i: mylocals[i], textos)
Ejemplo:
Código:
In [13]: texto1=5
In [14]: texto2=3
In [15]: textos=['texto1', 'texto2']
In [16]: print textos
['texto1', 'texto2']
In [17]: mylocals=locals()
In [18]: textos=map(lambda i: mylocals[i], textos)
In [19]: print textos
[5, 3]
De hecho tu función probablemente "debería" ser así:
Código:
textos=[]
for i in numerodetextos:
textos.append(locals()['text'+str(i)])
return textos
Fíjate que no metemos en la lista textos la cadena 'text'+stri(i), sino que vamos a las variables locales (locals()) y metemos en textos el valor de la variable local llamada 'text'+str(i)
Pero lo que quieres hacer es tan jodidamente raro que yo lo catalogo como error de diseño, y tendrías que escribir tu programa de una forma diferente. Por ejemplo: ¿para qué necesitas tener las variables texto1, texto2, texto3... como variables en vez de estar ya dentro de la lista textos?
Marcadores