Ej. 32 : Aprendiendo con bucles y listas…

Ahora puedo hacer programas mucho más interesantes.

Sin embargo, los programas también necesitan hacer cosas de manera repetitiva y muy rápida.

En éste ejercicio voy a utilizar un bucle para generar e imprimir varias listas.

Antes de usar un bucle for, necesitamos una forma de almacenar en algún lugar los resultados del bucle. La mejor manera es hacerlo es una lista. Una lista es exactamente lo que dice su nombre, un contenedor de cosas que están organizadas en orden. No es complicado. Sólo hay que aprender una sintaxis nueva. Ésta es la forma de crear una lista:

hairs = [‘brown’, ‘blond’, ‘red’]

eyes = [‘brown’, ‘blue’, ‘green’]

weights =[1, 2, 3, 4]

Lo que hago es empezar la lista con el corchete izquierdo para abrir la lista. Luego escribo cada uno de los elementos que deseo que contenga la lista. Igual que hacía con los parámetros de las funciones. Por último, termino y cierro con corchete derecho. Python toma ésta lista y todo su contenido, y lo asigna a una variable.

Creo algunas listas usando bucles y las muestro en pantalla:


Ej. 32 - Editor Ej. 32 - Terminal

NOTA: A muchos cerebros les han enseñado que el mundo es plano. En el ejercicio anterior, tenía sentencias del tipo if dentro de otro if. Para algunos, «anidar» unas cosas dentro de otras puede dar lugar a confusión. En programación ésto está por todos lados. Encontraré funciones que llaman a otras funciones que tienen sentencias if y listas con listas dentro de listas. Ante problemas, sugiero papel y lápiz, para un análisis manual.

PREGUNTAS

P: ¿Cómo se hace una lista de dos dimensiones?

R: De una forma similar a ésta: [[1, 2, 3], [4, 5, 6]].

P: ¿Es lo mismo una lista que un array?

R: Interesante. Depende del lenguaje y la implementación. Estrictamente, las listas son muy diferentes a los arrays debido a la forma de implementación. En Ruby, las listas se denominan arrays. En Python, nos referimos a ellas como listas. Por ahora las llamamos listas, ya que Python las llama así.

P: ¿Cómo puede un bucle for usar una variable que no había sido definida antes?

R: La variable queda definida en el bucle y toma un valor en cada iteración.

P: Mmmmm. ¿Y qué es una iteración?

R: De momento, voy a remitirme a las palabras de Wikipedia…

En programación, Iteración es la repetición de un proceso dentro de un programa de computadora. Puede usarse tanto como un término genérico (como sinónimo de repetición) así como para describir una forma específica de repetición con un estado mutable (el ejercicio es el segundo caso).

Cuando se usa en el primer sentido, la recursividad es un ejemplo de iteración, pero que usa su propia notación (notación recursiva), que no es el caso de iteración.

Sin embargo, cuando se usa en el segundo sentido (caso más restringido), como vemos en el ejercicio, la iteración describe el estilo de programación usado en lenguajes de programación imperativa. Esto está en contraposición de la recursividad, la cual tiene un enfoque más declarativo.

He aquí un ejemplo de iteración basándose en asignación destructiva, en pseudocódigo imperativo:

 var i=0, a := 0        // inicializo a antes de comenzar la iteración
 for i from 1 to 3 {  // ciclo 3 veces
     a = a + i       // incremento a con el valor actual de i
     print a              // se imprime el número 6
     }

En este fragmento de programa, el valor de la variable i cambia a medida que la ejecución del programa progresa, tomando los valores 1, 2 y 3. Este cambio de valor —o estado mutable— es característico de una iteración.

Es un tema que da para mucho. Lo retomaré.

P: ¿Qué hace la función range exactamente?

R: Vamos a preguntar a pydoc:

Pydoc - range

P: ¿Por qué for i in range (1, 3): sólo tiene dos iteraciones en lugar de tres?

R: La función range () va del primer al último número, pero no incluye el último. Así que se detiene en dos, no en tres. Es la forma más común de funcionamiento de éste tipo de bucles.

P: ¿Qué hace elements.append () ?

R: Simplemente añade algo al final de la lista. Abre la línea de comandos de Python y prueba ejemplos con cada lista que crees. Así se ve mejor.

PENDIENTE

  1. Buscar info en la documentación de Python sobre las listas. ¿Qué otras operaciones se pueden usar para añadir elementos a las listas?
  2. Profundizar sobre iteración y recursividad.