Python logo - Curso de Python desde cero

Las listas en Python

Vemos las listas en Python, su sintaxis y las operaciones básicas

Bienvenidos a otra entrega de este curso de programación en python en el que nos encontramos dando nuestros primeros pasos, viendo cuestiones básicas de este lenguaje de programación.

En el capitulo anterior vimos una estructura fundamental que es la función, concretamente los parámetros o argumentos en la función. Seguiremos trabajando con las funciones a lo largo del curso y profundizaremos en su uso, pero ahora nos toca abordar otra estructura fundamental, no solamente en python sino en la mayoría de los lenguajes de programación y esa estructura es la lista. Vamos a ver en este post qué son las listas.

Aquellos que vengáis de otros lenguajes de programación veréis que las listas en python es el equivalente a los arrays, arreglos, vectores en otros lenguajes. O por lo menos si no es exactamente el equivalente, sí que son muy muy parecidos y la utilidad es la misma.

¿Qué son las listas?

Aquellos que no tengáis conocimientos previos de programación y os introduzcáis por primera vez en este concepto de la lista, array, etcétera, las listas en python son unas estructuras de datos que nos permiten almacenar varios valores. Es como si fuera un grupo de variables, no es que lo sea, pero es para que lo entendáis.

Mientras que una variable nos permite almacenar un único valor en la memoria del ordenador, una lista nos permitiría, a diferencia de las variables, almacenar en la memoria del ordenador varios valores.

Cuando creamos una lista, internamente lo que estamos haciendo es reservar varios espacios en la memoria del ordenador para almacenar valores, pero que funcionan como una unidad. Es como si una variable fuera un cajón y una lista fuera una estantería, por hacer un símil con la vida real.

Son unas estructuras de programación muy utilizadas a la hora de crear aplicaciones y es fundamental conocer su uso. Aquellos que tengáis conocimientos en otros lenguajes conviene que veáis las diferencias que existen entre las listas de python y los arrays de otros lenguajes.

Las listas en python nos permiten guardar diferentes tipos de valores. Esto no es así en todos los lenguajes de programación, por ejemplo un array en Java no permite que guardes diferentes tipos de valores.

Otra característica muy importante que tienen las listas de python y no los arrays de otros lenguajes de programación, es que las listas se pueden expandir dinámicamente, lo cual es bastante cómodo. En otros lenguajes, como por ejemplo Java, tienes que recurrir a otras estructuras si quieres poder hacer esto porque el array no te lo permite.

Una pregunta que puede surgir es si en una lista puede haber varios elementos iguales en posiciones diferentes, por supuesto que sí, en las listas se pueden repetir los elementos en distintas posiciones.

Sintaxis de las listas en Python

La sintaxis que tiene una lista en python es muy sencilla. Es el nombre que le quieras dar a tu lista, signo igual, y a continuación entre corchetes, los elementos que forman parte de esa lista separados por comas.

>>> nombre_lista = [elemento1, elemento2, elemento3, etc]

Una lista puede tener ningún elemento, lo que sería una lista vacía, un elemento o cientos de elementos. En el caso de que tengas varios, tendrás que separarlos con sus correspondientes comas.

Declarar una lista en Python

Hemos visto la sintaxis básica para crear o declarar una lista. Ahora vemos un ejemplo práctico. Voy a comenzar por almacenar una serie de nombres, que son datos de tipo texto y los textos deben ir entrecomillados como hemos hablado anteriormente.

>>> mi_primera_lista = ["Lucio", "BocaNegra", "MariMisi", "Ramón"]

Si nosotros queremos imprimir esta lista pues lo que debemos hacer es utilizar la función print() con la siguiente sintaxis:

>>> print(mi_primera_lista[:])
['Lucio', 'BocaNegra', 'MariMisi', 'Ramón']

El índice de las listas

Como una lista en definitiva lo que nos permite es almacenar varios valores como he dicho anteriormente, los valores que forman parte de la lista deben estar identificados y localizables para que esto sea posible. Recurrimos a lo que se llama un índice, que no es ni más ni menos que la posición del elemento dentro de la lista.

Pero no hay que confundir el número de elementos que tenemos dentro de una lista con su índice o posición, porque una particularidad de las listas, también de los arrays en otros lenguajes, es que siempre se comienza a numerar el primer elemento de la lista con el índice o posición cero.

>>> nombre_lista = [elemento1, elemento2, elemento3, etc]
Posición 0 -> elemento1
Posición 1 -> elemento2 
Posición 2 -> elemento3 
...

En este sencillo ejemplo el primer elemento que forma parte de esta lista ocupa la posición cero, el siguiente índice 1, el siguiente índice 2 y así sucesivamente.

Nuestra lista de ejemplo tiene cuatro elementos, que va desde el índice 0 hasta el índice 3. Lucio sería el elemento correspondiente al índice 0, BocaNegra índice 1, MariMisi índice 2 y Ramón índice 3.

>>> mi_primera_lista = ["Lucio", "BocaNegra", "MariMisi", "Ramón"]
Posición 0 -> Lucio
Posición 1 -> BocaNegra
Posición 2 -> MariMisi
Posición 3 -> Ramón

Si queremos acceder a un elemento en concreto, pues lo único que hay que hacer es escribir el nombre de la lista y entre corchetes el índice de ese elemento. Si queremos acceder, por ejemplo al elemento que está en la posición 2, lo único que habrá que hacer es entre corchetes escribir la posición a la que queremos acceder.

>>> print(mi_primera_lista[2])
'MariMisi'

Si intentas acceder a un índice que no existe en tu lista se va a generar lo que se conoce como una excepción o un error. Hablaremos a lo largo del curso de las excepciones. Por ejemplo, en esta lista tenemos índice 0 – 1 – 2 – 3. Si intentó acceder al 4, 5, 6, etcétera, nos va a dar un error.

Viendo esto alguien podría pensar que si nos da por escribir un índice negativo también daría error, sin embargo python tiene una particularidad cuando introducimos índices negativos dentro de una lista, y es que le da la vuelta. Es decir, cuando introducimos un índice negativo empieza a contar ese índice desde el final.

>>> mi_primera_lista = ["Lucio", "BocaNegra", "MariMisi", "Ramón"]
Posición 0 -> Lucio     <- Posición -4
Posición 1 -> BocaNegra <- Posición -3
Posición 2 -> MariMisi  <- Posición -2
Posición 3 -> Ramón     <- Posición -1

Si yo por ejemplo pongo mi lista – 2 pues estaríamos accediendo a el elemento MariMisi.

>>> print(mi_primera_lista[-2])
MariMisi

Cuando empieza a contar desde el final no empieza a contar desde cero, sino que directamente empezaría a contar desde -1.

Porción de lista

Cuando tengamos listas muy largas pues es muy probable que necesitemos acceder a lo que se conoce como porción de lista, que es acceder no a toda la lista, sino a un trozo a una porción de esa lista.

La lista de nuestro ejemplo es muy corta con lo cual esto puede parecer que carece de utilidad en este caso en concreto, pero para que veáis cuál es la sintaxis:

>>> print(mi_primera_lista[0:3])
['Lucio', 'BocaNegra', 'MariMisi']

Lo que le estamos diciendo con esto es que debe acceder a los tres primeros elementos, desde el índice cero (incluido) hasta el índice 3, quedando excluido el último índice. Otro ejemplo, para acceder a los elementos desde el índice 1 hasta el índice 3 (no inclusive, recuerda).

>>> print(mi_primera_lista[1:3])
['BocaNegra', 'MariMisi']

Hay nomenclaturas abreviadas cuando queremos trabajar con porciones. Por ejemplo, imaginemos que queremos acceder a los mismos a los tres primeros elementos pero queremos escribirlo de una forma más abreviada. Si omitimos el primer número python sobreentiende al omitir el primer índice que se trata del cero, de tal forma que el resultado es el mismo.

>>> print(mi_primera_lista[:3])
['Lucio', 'BocaNegra', 'MariMisi']

Hay otra nomenclatura que tenemos de acceder a una porción, y es poner el primer índice y prescindir del segundo índice. Lo que le estamos diciendo al omitir el 2ª índice es que debe acceder desde el primer índice hasta el final.

>>> print(mi_primera_lista[2:])
['MariMisi', 'Ramón']

En este caso es que debe acceder desde el elemento con índice 2 hasta el elemento final de la lista.

Operaciones con las listas en Python

Añadir elementos a una lista

.append()

Para agregar elementos al final una lista en python pues debemos utilizar la instrucción o la función append(). La sintaxis es muy sencilla: nombre de la lista, punto, append, abrimos paréntesis y a continuación el elemento que queremos agregar.

>>> mi_lista.append(elemento)

Por ejemplo, si queremos agregar otra persona más a nuestra lista escribimos el nombre entre paréntesis y con eso añadimos el nuevo elemento. Luego podemos decirle que imprima mi lista sin indicar índice ninguno para que la imprima por completo.

>>> mi_primera_lista.append("Cirindolo")
>>> print(mi_primera_lista[:])
['Lucio', 'BocaNegra', 'MariMisi', 'Ramón', 'Cirindolo']

append() agrega el elemento al final de la lista como podéis ver, pero a lo mejor tú deseas que este elemento nuevo pues no sea agregado al final sino que sea agregado en un punto intermedio tenemos que utilizar otra función: es la función insert().

.insert()

Cuando queremos añadir un elemento en una posición determinada utilizamos esta función insert(), que nos pide dos argumentos: como primer argumento la posición o índice, y después el elemento que queremos introducir en la lista. En el siguiente ejemplo, le estamos diciendo que en el índice 2 nos debe de incluir el elemento Juan Tomás. Cuando ejecutamos el programa e imprima la lista observaremos que Juan Tomás se encuentra entre BocaNegra y MariMisi, que es donde estaría la posición 2

>>> mi_primera_lista.insert(2, "Juan Tomás")
>>> print(mi_primera_lista[:])
['Lucio', 'BocaNegra', 'Juan Tomás', 'MariMisi', 'Ramón', 'Cirindolo']

.extend([])

Si lo que quieres es agregar varios elementos a una lista, lo que podemos hacer es utilizar la función extend([]). El nombre de mi lista, punto extend, abrimos paréntesis y entre corchetes los elementos que queremos agregar.

>>> mi_primera_lista.extend(["Sonio", "Inti", "BabaKiss"])
>>> print(mi_primera_lista[:])
['Lucio', 'BocaNegra', 'Juan Tomás', 'MariMisi', 'Ramón', 'Cirindolo', 'Sonio', 'Inti', 'BabaKiss']

Realmente es como si estuviéramos concatenando, uniendo otra lista porque aquí al incluir los corchetes realmente es como si se tratara de otra lista. En definitiva tendríamos como resultado la lista original con otra lista concatenada.

Obtener el índice de un elemento .index()

Otra función muy útil a la hora de trabajar con listas. Es muy probable que necesitemos que en nuestro programa de python nos devuelva el índice de un elemento dentro de una lista. Es como preguntarle en qué índice está un determinado elemento. Cómo conseguimos esto, pues con la función index().

>>> print(mi_primera_lista.index("MariMisi")
3

Si nosotros le decimos print, mi lista, punto index y a continuación el elemento del que queremos obtener el índice. Esto tiene sentido como podéis imaginar con listas muy, muy grandes y en escenarios muy concretos.

Ya sabemos que en las listas de Python se puede repetir el mismo elemento en diferentes posiciones. Sin embargo, cuando le preguntamos por el índice siempre nos va a devolver el índice del primer elemento coincidente que se encuentra dentro de la lista.

Comprobar si un elemento está en la lista con in

Otra función que nos puede resultar muy útil a la hora de crear programas en python es la que utilizamos para comprobar que un elemento se encuentra o no se encuentra en una lista.

Imaginaos que tenemos una lista muy grande de elementos y necesitamos saber a la hora de elaborar un programa si un elemento se encuentra en dicha lista. Hay una función que es la función in que nos devuelve True, es decir, verdadero si se encuentra el elemento, False, si no se encuentra.

>>> print("BocaNegra" in mi_primera_lista)
True

Diferentes tipos de datos en la lista

Estamos trabajando todo el rato con el mismo tipo de datos, y una de las características importantes y potentes que tienen las listas de python es que pueden almacenar diferentes tipos de datos. Para que veáis que se puede hacer perfectamente voy a sustituir el segundo elemento por el número 5, el tercer elemento por el valor booleano True y el cuarto elemento por un valor decimal 26.98.

>>> mi_segunda_lista = ["Lucio", 5, True, 26.98]
>>> print(mi_segunda_lista[:])
['Lucio', 5, True, 26.98]         

Esto sigue funcionando exactamente igual, tenemos por un lado textos, tenemos por otro lado números enteros, por otro lado tenemos números decimales y también tenemos booleanos.

Eliminar elementos de la lista

.remove()

Otra operación importante que vamos a necesitar utilizar a la hora de trabajar con listas es la eliminación de elementos concretos. Para eliminar elementos concretos se utiliza la función remove(), y lo único que hay que hacer es indicar el elemento que quieres eliminar.

>>> mi_segunda_lista.remove("Lucio")
>>> print(mi_segunda_lista[:])
[5, True, 26.98]         

Por ejemplo, de esta lista queremos eliminar el elemento Lucio pues lo único que hay que hacer es escribir el nombre de la lista, punto, remove y luego pues el elemento que quieres eliminar entre paréntesis.

.pop()

Igual que hemos visto que contamos con la función append para agregar un elemento a la lista en último lugar, también nos veremos a veces en la necesidad de eliminar el último elemento de la lista. Para realizar esta acción utilizamos la función pop() que elimina el último elemento de una lista.

>>> mi_segunda_lista.pop()
>>> print(mi_segunda_lista[:])         
[5, True]

En este caso se esta eliminando el valor 26.98

Operador suma + para concatenar listas

Para terminar vamos a ver un operador que podemos utilizar con las listas que va a hacer algo muy parecido a extend() pero no es exactamente lo mismo. extend() lo que hace es agregar a la lista original otra lista u otros elementos de tal forma que al final cuando el flujo de ejecución del programa sale de la esta línea de código, se encuentra con que tiene una sola lista con todos los elementos.

Hay un operador que ya hemos visto que es el operador suma + que lo que hace es sumar listas, pero sumar listas diferentes. vamos a hacer un ejemplo para que se entienda:

>>> mi_primera_lista = ["Lucio", "BocaNegra", "MariMisi", "Ramón"]
>>> mi_segunda_lista = ["text", 5, True, 26.98]
>>> mi_tercera_lista = mi_primera_lista + mi_segunda_lista   
>>> print(mi_tercera_lista[:])        
['Lucio', 'BocaNegra', 'MariMisi', 'Ramón', 'text', 5, True, 26.98]

Ahora mismo tenemos dos listas de nuestro programa, si queremos unir estas dos listas podemos podemos crear una tercera lista y decir que esta tercera lista es igual a la primera lista más la segunda lista. En definitiva tenemos tres listas y la tercera es el resultado de unir las dos anteriores. El operador suma cuando se trabaja con listas funciona como concatenador o como unión de dos listas.

Operador multiplicación *

Para finalizar vamos a ver otro operador ya que estamos con los operadores, es el operador multiplicación, * el asterisco. Este símbolo cuando trabajamos con listas pues funciona a modo de repetidor. Si ponemos asterisco 3, lo que va a hacer es repetir esta lista tres veces:

>>> mi_primera_lista = ["Lucio", "BocaNegra", "MariMisi", "Ramón"] * 3
>>> print(mi_primera_lista[:])
['Lucio', 'BocaNegra', 'MariMisi', 'Ramón', 'Lucio', 'BocaNegra', 'MariMisi', 'Ramón', 'Lucio', 'BocaNegra', 'MariMisi', 'Ramón']

Bueno, pues yo creo que tenemos las herramientas básicas para poder trabajar en este curso de Python con las listas. Vamos a dejar este post en el punto en el que nos encontramos y os digo lo de siempre, os invito a que permanezcan atentos a la próxima entrega. Hasta entonces, que vaya bien.

Ir arriba

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar