Contando y generando cuadrados perfectos.

Necesito algunos consejos sobre cómo escribir un progtwig de Python donde te da una lista de los primeros n cuadrados perfectos en formato de lista. La salida debería verse así:

 ¿Cuántos cuadrados ?: 5  
 [1, 4, 9, 16, 25]

Esto es lo que tengo hasta ahora:

n = int(raw_input("How many squares? ")) 

Ahora para la siguiente parte necesito crear una lista de los primeros n cuadrados. ¿Alguna sugerencia sobre cómo? Gracias por su tiempo y consejo.

Use una lista de comprensión:

 [ a*a for a in xrange(1, n + 1) ] 

Ahora, para la siguiente parte, debo comenzar a crear una lista de los primeros n cuadrados. ¿Alguna sugerencia sobre cómo? Gracias por su tiempo y consejo.

Esto es algo con lo que se puede ayudar. Para la otra parte, publica tu algoritmo.

Usa el rango para generar una lista:

 >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

Usa la lista de comprensión para obtener la lista de x ^ 2

 >>> [x**2 for x in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> 

Novikov proporciona una respuesta más elegante.

 n = int(raw_input("How many squares? ")) map((2).__rpow__, range(1, n+1)) 

o

 from operator import mul n = int(raw_input("How many squares? ")) map(mul, *[range(1, n+1)]*2) 

Alguien mencionó los generadores. Así es como los usas en este caso:

 def sq(n): i=0 while i 

O con mapa y una función lambda.

 n = int(raw_input("How many squares? ")) map(lambda x: x*x, range(n)) 

si lo quieres empezando por 1

 map(lambda x: x*x, range(1, n+1)) 

código:

 list_squares=[] for a in xrange(1, n+1): list_squares.append(a*a) print list_squares 

donde n es la entrada del usuario para el número de cuadrados que desea.

Si n=5 entonces la salida se ve como:

 [1, 4, 9, 16, 25]