Q:

cadena de texto con ciclo while python

Hola compañeros llevo varios dias sin poder resolver un ejercicio, tal vez para ustedes es facil pero en mi caso no he podido resolverlo.
Escriba la función list2(x) que devuelve la lista x con sus elementos elevados al cuadrado. Use un ciclo while en vez de un ciclo for o recursión para su implementación.

A:

Esta es la solucion que satisface los requerimientos que expones.  
def list2(x):
  def _list(x):
    c = 0
    while c < len(x):
      yield x[c]**2
      c += 1
  return list(_list(x))

print(list2([1,2,3]))  # [1,4,9]

