El tipo de datos List es uno de los más utilizados de Python. Si vienes de otro lenguaje, puedes que asocies “listas” con la palabra array, donde debes especificar el tamaño que posee, el tipo de datos de valores que almacenará, etc. Esto no es así, las listas en Python son mucho más versátiles.
Las listas son declaradas con una lista de valores separados por coma entre corchetes y no precisan indicar la cantidad de elementos que almacenará la misma ni el tipo de datos, ya que los datos almacenados ¡pueden ser de diferentes tipos!
Creando una lista
Para crear una lista, solamente debes utilizar el nombre, el carácter igual y los valores que deseas añadir separados por coma entre corchetes. Por ejemplo:
>>> lista = [0, "Posicion 1", 2, [0,3], 4, 5]
>>> type(lista)
<class 'list'>
- Creamos una variable con diferentes elementos.
- Si comprobamos el tipo de datos, vemos que se trata de una lista.
- …
- A igual que para las cadenas, para acceder a uno de sus valores, se pueden utilizar los corchetes con la posición del elemento que se desea, también comenzando por el cero.
>>> lista[0]
0 - …
- Recuerda que cada elemento de una lista posee su tipo de datos, por lo que si uno de sus elementos es una cadena, puedes acceder a una de sus posiciones en la misma línea de acceso.
>>> type(lista[1])
<class 'str'>
>>> lista[1][0]
'P' - …
- Deberías tener mucho cuidado al realizar indexaciones como estas, dado a que no puedes acceder a una mayor al número de elementos que posee la lista, esto devolverá una excepción de IndexError.
>>> lista[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
Pero qué son las excepciones? Estas se generan cuando algo en el código no salió como se esperaba que ocurriera y el código se detiene -o no-, pero ya hablaremos de ellas luego.
Modificando una lista
A una lista existente se le pueden agregar, quitar o editar datos. Para ello, se utilizan diferentes modos:
Para agregar un elemento a una lista, puedes hacerlo sumando una nueva lista a la actual. Por ejemplo…
>>> lista = lista + [1]
>>> #o bien
>>> lista += [2]
- A la variable lista, asignamos su mismo valor más una nueva lista de un solo valor.
- Otra manera de hacerlo, es utilizar el operador de asignación +=.
Si bien esto es posible, no es lo más recomendable, dado al gran tiempo de ejecución en grandes volúmenes de datos (Puedes chequear su notación BigO para comprenderlo mejor).
La mejor forma para agregar un elemento a una lista es utilizar la función append(). Esta función es un método de las listas, por lo que la forma de usarlo sería la siguiente:
>>> lista.append(3)
>>> lista
[0, 'Posicion 1', 2, [0, 3], 4, 5, 1, 2, 3]
- Utilizamos el método append de las listas y pasamos el valor 3.
- Verificamos el contenido y vemos que se agregó el valor 3.
Buscar un elemento
Vale aclarar que al agregar un elemento a la lista, no se hace ninguna comprobación, como si el elemento ya se encuentra en la lista, por ejemplo. La lista permite almacenar valores repetidos y será tu decisión si deseas hacerlo o no. Para comprobar si un elemento se encuentra en la lista, puedes usar la expresión elemento in lista (in y not in). Por ejemplo…
>>> 55 in lista
False
>>> lista.append(55)
>>> 55 in lista
True
- Verificamos si el valor 55 está en la lista y vemos que devuelve False.
- Agregamos el valor 55 y volvemos a comprobar.
- Como podemos ver, devuelve True.
Para encontrar un elemento en una lista, puedes utilizar el método index. Este método devolverá la posición en la que se encuentra el elemento o bien, a diferencia de otros lenguajes, elevará una excepción si no lo encuentra. Por ejemplo…
>>> lista.index("Posicion 1")
1
- Si buscamos la posición de la cadena “Posicion 1”.
- veremos que devuelve la posicion 1
En cambio, si tratamos de obtener la posición de un valor que no existe en la lista, Python elevará una excepción de tipo ValueError, indicando que el elemento buscado no se encontró en la lista. Por ejemplo…
>>> lista.index("Posicion 2")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'Posicion 2' is not in list
- Buscamos el texto “Posicion 2”.
- Observamos que se genera una excepción indicando que no se encuentra el elemento.
Además de comprobar si se encuentra un elemento en una lista, con el método count puedes contar la cantidad de veces que aparece el mismo. Por ejemplo…
>>> lista
[0, 'Posicion 1', 2, [0, 3], 4, 5, 1, 2, 3]
>>> lista.count(3)
1
- Observamos el valor de lista
- Contamos cuántas veces aparece el valor 3 y vemos que es 1.
Vale aclarar que el método count solo busca en la lista principal y no dentro de cada uno de sus elementos, por lo que no contará el valor 3 que se encuentra dentro de la posición 3 ([0,3]) dado a que este elemento es otra lista y no el valor 3.
Eliminando un elemento
Para eliminar un elemento de una lista, puedes utilizar el método pop().
El método pop se encarga de eliminar y retornar -por defecto- el último elemento de la lista.
>>> lista.pop()
3
>>> lista
[1,2]
- Utilizamos el método pop y vemos que devuelve el elemento eliminado.
- Comprobamos el valor de lista y vemos que ya no existe el valor 3.
Pero el método pop también puede recibir como parámetro, la posición que se desea eliminar, por ejemplo:.
>>> lista = [1,2,3]
>>> lista.pop(1)
2
>>> lista
[1,3]
- Creamos la lista con 3 elementos.
- Eliminamos la posición 1.
- Como podemos ver, nos devuelve el valor que se elimina.
- Si observamos la lista, vemos que la eliminación fue correcta.
En cambio, si no sabes la posición en la que se encuentra el valor que deseas eliminar, simplemente puedes utilizar el método remove(), el cual recibe el valor a eliminar y elimina su primer coincidencia. Por ejemplo…
>>> lista.remove(3)
>>> lista
[1]
- Indicamos que remueva el número 3 de la lista.
- Si observamos el contenido de la lista, vemos que se eliminó el valor 3.
>>> lista = [1, 2, 3, 4, 5, 2, 6, 2]
>>> lista.remove(2)
>>> lista
[1, 3, 4, 5, 2, 6, 2]
- En cambio, si redefinimos la lista y repitiendo valores.
- Y eliminamos un valor que se repite n veces.
- Vemos que únicamente se elimina la primer coincidencia.
Tuplas (tuple)
Las tuplas son muy similares a las listas, con la única diferencia de que son inmutables. Esto quiere decir que una vez que se definen, no pueden ser modificadas.
Al igual de que las listas comparten características con las cadenas, las tuplas comparten algunas características con las listas, como la posibilidad de contener diversos tipos de datos, el modo de acceder a los valores, el conteo de elementos, etc.
Definiendo una tupla
Para definir una tupla, puedes simplemente utilizar el nombre de la variable y el conjunto valores separador por comas. Por ejemplo…
>>> t = 1,5,6
>>> type(t)
<class 'tuple'>
- Definimos la variable t con los valores 1,5,6
- Si comprobamos el tipo de dato, vemos que devuelve que es de clase tuple
Si bien para definir una tupla puedes utilizar los valores separador por comas, por convención se ubica dichos valores entre paréntesis. Por ejemplo…
>>> t = (1,5,6)
>>> type(t)
<class 'tuple'>
- Redefinimos la variable t utilizando paréntesis.
- Y vemos que el tipo de dato, continúa siendo tuple