Empezamos con esta presentación, una nueva lección del módulo tres dedicada al tema de listas. Las listas son colecciones ordenadas de valores y a su vez son un tipo en "Python". Ese tipo se llama "list". Los valores que conforman una lista son llamados elementos o ítems de la lista. Las listas son similares a los "strings", que ya sabemos son conjuntos ordenados de caracteres. Se diferencian en que los elementos de una lista pueden ser de cualquier tipo. Podemos guardar en una lista números enteros, valores flotantes, o incluso cadenas de caracteres u otras listas. Las listas y los "strings" y otras colecciones que mantienen el orden de sus ítems se denominan secuencias. En una lista podemos registrar, entre muchas otras cosas, las notas de los estudiantes de una clase, la evolución de la temperatura hora a hora, los coeficientes de un polinomio, los contactos telefónicos. La lista de ejemplos del uso de listas es infinita. Hay varias formas de crear una lista. La más simple es encerrando los elementos dentro de corchetes cuadrados. Veamos el siguiente ejemplo. Estamos con esta instrucción creando una nueva lista llamada números cuyos elementos o ítems son los números diez, 20, 30 y 40. Los encerramos entre corchetes cuadrados, los separamos por comas y "Python" sabe que esto es una nueva lista. Si ponemos el nombre de esta variable en la terminal de "Spyder", encontramos el contenido de la lista. Aquí estamos creando otra lista llamada nombres, cuyo contenido son los ítems Juan, Antonia, Luis y María. Como vemos, podemos tener listas de enteros o de "strings". Lo importante es que esos elementos deben estar siempre encerrados dentro de corchetes cuadrados y separados por coma. También podemos usar expresiones para calcular el valor de cada elemento de una lista. Por ejemplo, estamos creando aquí una lista que llamamos "a" o estamos guardando en la variable llamada "a" cuyos elementos son uno, uno más uno que da como resultado dos, seis división entera dos que da como resultado tres. Entonces nuestra lista tiene tres elementos: uno, dos y tres. Una lista sin elementos se llama una lista vacía y se denota de esta manera: abrimos corchete cuadrado, cerramos corchete cuadrado sin nada en el medio. Los elementos de una lista no tienen que ser del mismo tipo. Miremos este ejemplo. Creamos una lista. Llamamos a esta variable lista variada y sus elementos o ítems son el "string" "hola", el valor flotante 2,5, el entero cinco y una nueva lista con dos elementos numéricos: diez y 20. Ese es el contenido de nuestra "lista_variada". ¿Cuántos elementos tiene entonces nuestra lista variada? Podemos pasar listas como parámetros a una función, a nuestras propias funciones o a la función "print". Veamos el ejemplo. Declaramos tres listas. La primera la guardamos en la variable llamada vocabulario. Contiene tres elementos: manzana, queso y pera. La segunda, llamada números, contiene dos elementos, 17 y 123; y una tercera variable llamada lista vacía que contiene una lista vacía. Mandamos imprimir nuestras tres listas y ¿qué vemos en pantalla? Las tres listas. No hay ninguna sorpresa, pero quiero que notemos acá que cada una de estas listas se imprime con sus propios corchetes cuadrados. Es así que nos damos cuenta que tenemos tres listas diferentes. Sin saberlo, ya sabemos muchas cosas sobre listas. Veamos por qué. "Python" nos proporciona operadores y funciones similares para trabajar con tipos de datos similares. Dado que tanto las cadenas de caracteres como las listas tienen algo en común, esto es, que ambas son secuencias de datos, muchos de los operadores y funciones que trabajan sobre cadenas también lo hacen sobre listas. Veamos entonces todo lo que ya sabemos sin saberlo. La función "len" aplicada sobre una lista nos dice cuántos elementos la integran. La longitud de una lista vacía es cero. El operador "más" nos sirve para concatenar listas y lo usamos de la misma forma como lo usábamos con las cadenas de caracteres. Veamos el ejemplo. Tenemos una lista "a" con dos elementos: uno y dos, una lista "b" también con dos elementos: tres y cuatro. Declaramos una nueva variable que es la concatenación de "a" y "b", y eso nos da como resultado una nueva lista con los cuatro elementos. En esta parte del ejemplo estamos mostrando que podemos concatenar listas sin necesidad de guardarlas en variables intermedias o podemos concatenar una lista y una variable que tenga por dentro otra lista. El operador de indexación aplica también para listas y lo utilizamos igual que con las cadenas de caracteres. Miremos este ejemplo. Tenemos nuestra lista "a" con los elementos uno, dos y tres y queremos acceder al elemento de la posición uno, obtenemos el valor dos. Si vamos al elemento de la posición longitud de "a" menos uno, obtenemos, como ya sabemos, el último elemento de la lista. Lo mismo con el menos uno. Podemos acceder a un elemento de una lista sin necesidad de guardarla en una variable. Al igual que en los "strings", el operador de corte aplica listas para extraer pedazos o sublistas de estas. Veamos el ejemplo. Tenemos nuestra lista "a" con cinco elementos. Si extraemos el pedazo o la sublista comprendida entre la posición uno y tres, obtendremos una sublista más pequeña con los elementos dos y tres. Recuerden que el tres nos incluye, es decir, que vamos a extraer el elemento que está en la posición uno y dos: dos y tres. Si extraemos la sublista que se encuentra entre la posición uno y la menos uno, sin incluir la menos uno, recordemos que menos uno es el último elemento de la lista, esto vamos a obtener como resultado el elemento dos, tres y cuatro. La sublista que está compuesta por esos tres elementos. Si vamos desde la posición uno hasta el final, obtendremos la sublista que empieza en dos y termina en cinco. También podemos utilizar la instrucción iterativa "for in" para recorrer uno a uno los elementos de una lista como lo hacíamos con los "strings". Las funciones "min" y "max" que utilizábamos sobre secuencias numéricas también aplican sobre listas. Por ejemplo, si tenemos una lista de números y le pedimos su valor mínimo, nos va a entregar el dos en este caso, que es el mínimo de este conjunto de elementos. Lo mismo con la función "max". No solo podemos utilizarlo con elementos numéricos, podemos emplear las funciones con cualquier tipo de elementos de una lista, siempre y cuando exista entre ellos una relación de orden. Veamos ahora otras formas de construir listas. Podemos combinar las funciones "list" y "range", como se muestra en este ejemplo, para crear una lista cuyos elementos sean los que genera la función "range" entre los límites que indiquemos. Aquí estamos poniendo como límites uno y cuatro. Recuerden que el cuatro nos incluye. Obtenemos como resultado una lista cuyos elementos son uno, dos y tres. También podemos construir listas utilizando el operador asterisco o multiplicación. Esto lo vamos a utilizar más adelante cuando veamos el tema de matrices. Es una forma muy corriente de construir listas que contienen réplicas de un mismo valor. Supongamos que necesitamos una lista con diez elementos, todos con el valor cero, entonces utilizamos la siguiente sintaxis. Creamos una lista pequeña con un único valor cero, la multiplicamos por diez y obtenemos nuestra lista con diez elementos, todos idénticos.