6  📊 Estructura de datos


Son una utilidad de Python dispuesta para almacenar y guardar cualquier tipo de Dato, tanto así que pueden contenerse entre sí. Cada una posee un tipo de paréntesis, o comillas en el caso de los strings, siendo fácil diferenciarlos unos de otro.

Las estructuras de datos de string ya fueron estudiados en secciones pasada. En esta sección nos centraremos en las estructuras de Listas, Tuplas y Diccionarios.

6.1 Listas

Una lista es una colección ordenada de valores. Una lista puede contener cualquier cosa.

En Python, el tipo de datos que representa a las listas se llama list.

6.1.1 Creando listas en python

Existen varias formas de crear listas:

6.1.2 Operaciones sobre listas

Operador len

len(lista) entrega el largo de la lista; es decir, cuántos elementos tiene:

Acceder al índice

l[i] entrega el i-ésimo valor de la lista. El valor \(i\) se llama índice del valor. Al igual que para los strings, los índices parten de cero:

Índice negativo

Si el índice es negativo, los elementos se cuentan desde el final hacia atrás:

Agregar un elemento

l.append(x) agrega el elemento x al final de la lista:

Concatenar dos listas

l1 + l2 concatena las listas l1 y l2:

Repetir lista

l * n repite \(n\) veces la lista l:

Elemento en una lista

Para saber si un elemento x está en la lista l, se usa x in l. La versión negativa de in es not in:

Operador rebanado

l[i:j] es el operador de rebanado, que entrega una nueva lista que tiene desde el i-ésimo hasta justo antes del j-ésimo elemento de la lista l:

Operador índice

l.index(x) entrega cuál es el índice del valor x:

Operador remover

l.remove(x) elimina el elemento x de la lista:

Operador borrar

del l[i] elimina el i-ésimo elemento de la lista:

Operador reversa

l.reverse() invierte la lista:

Operador ordenar

l.sort() ordena la lista:

6.1.3 Iterar sobre una lista

En Python, una lista es un tipo de objeto iterable, lo que significa que puedes recorrer sus elementos utilizando un ciclo for.

A continuación, te mostraremos un ejemplo de cómo hacerlo paso a paso:

  1. Creamos una lista llamada valores que contiene los números [1, 2, 3, 4, 5]. Esta será la lista que recorreremos.

  2. Utilizamos un ciclo for para iterar a través de cada elemento de la lista. En cada iteración, la variable i toma el valor del siguiente elemento de la lista.

  3. Dentro del ciclo for, calculamos el cuadrado de i usando el operador ** y almacenamos el resultado en la variable cuadrado.

  4. Finalmente, imprimimos en la consola un mensaje que muestra el número original (i) y su cuadrado (cuadrado) utilizando una f-string.

6.2 Tuplas

Una tupla es una secuencia de valores agrupados. Una tupla sirve para agrupar, como si fueran un único valor, varios valores que, por su naturaleza, deben ir juntos.

El tipo de datos que representa a las tuplas se llama tuple. El tipo tuple es inmutable: una tupla no puede ser modificada una vez que ha sido creada.

6.2.1 Desempaquetado de tuplas

Los valores individuales de una tupla pueden ser recuperados asignando la tupla a las variables respectivas. Esto se llama desempaquetar la tupla (en inglés: unpack):

Si se intenta desempaquetar una cantidad incorrecta de valores, ocurre un error de valor:

6.2.2 Comparación de tuplas

Dos tuplas son iguales cuando tienen el mismo tamaño y cada uno de sus elementos correspondientes tienen el mismo valor:

Para determinar si una tupla es menor que otra, se utiliza lo que se denomina orden lexicográfico. Si los elementos en la primera posición de ambas tuplas son distintos, ellos determinan el ordenamiento de las tuplas:

6.2.3 Acceder a valores de una tupla

Al igual que las listas, se pueden acceder a distintos elemntos de las tuplas de la siguiente forma:

6.2.4 Iteración sobre tuplas

Las tuplas en Python también son objetos iterables, lo que significa que puedes recorrer sus elementos usando un ciclo for.

A continuación, te mostraremos un ejemplo de cómo hacerlo paso a paso:

Convertir Entre Listas y Tuplas

En Python, puedes convertir una tupla en una lista utilizando la función list() y una lista en una tupla utilizando la función tuple(). Esto es útil cuando necesitas cambiar el tipo de contenedor de datos. A continuación, te proporciono ejemplos para ilustrar ambos casos:

Convertir una Tupla en una Lista:

Convertir una Lista en una Tupla:

6.3 Conjuntos

Un conjunto es una colección desordenada de valores no repetidos.

Los conjuntos de Python son análogos a los conjuntos matemáticos. El tipo de datos que representa a los conjuntos se llama set.

6.3.1 Cómo crear conjuntos

Las dos maneras principales de crear un conjunto son:

Los elementos de un conjunto deben ser inmutables. Por ejemplo, no es posible crear un conjunto de listas, pero sí un conjunto de tuplas:

Como un conjunto no es ordenado, no tiene sentido intentar obtener un elemento usando un índice:

Sin embargo, sí es posible iterar sobre un conjunto usando un ciclo for:

6.3.2 Operaciones sobre conjuntos

Largo del conjunto len(s) entrega el número de elementos del conjunto s:

Elementos en el conjunto

x in s permite saber si el elemento x está en el conjunto s:

x not in s permite saber si x no está en s:

Agregar elementos al conjunto

s.add(x) agrega el elemento x al conjunto s:

Remover elementos al conjunto

s.remove(x) elimina el elemento x del conjunto s:

Si el elemento x no está en el conjunto, ocurre un error de llave:

Operaciones sobre conjuntos

& y | son los operadores de intersección y unión repectivamente:

s - t entrega la diferencia entre s y t; es decir, los elementos de s que no están en t:

s ^ t entrega la diferencia simétrica entre s y t; es decir, los elementos que están en s o en t, pero no en ambos:

El operador < aplicado sobre conjuntos significa «es subconjunto de»:

s <= t también indica si s es subconjunto de t. La distinción ocurre cuando los conjuntos son iguales:

6.4 Diccionarios

Un diccionario es un tipo de datos que sirve para asociar pares de objetos.

Un diccionario puede ser visto como una colección de llaves, cada una de las cuales tiene asociada un valor. Las llaves no están ordenadas y no hay llaves repetidas. La única manera de acceder a un valor es a través de su llave.

6.4.1 Cómo crear diccionarios

Los diccionarios literales se crean usando llaves ({ y }). La llave y el valor van separados por dos puntos:

6.4.2 Cómo usar un diccionario

El valor asociado a la llave \(k\) en el diccionario \(dct\) se puede obtener mediante \(dct[k]\):

Si se asigna un valor a una llave que ya estaba en el diccionario, el valor anterior se sobreescribe. Recuerde que un diccionario no puede tener llaves repetidas:

También se pueden adherir llaves al diccionario

Por otro lado, si se quiere borrar una llave o el mismo diccionario, se ocupa el comando del

6.4.3 Iterar un diccionario

Los diccionarios son iterables. Al iterar sobre un diccionario en un ciclo for, se obtiene las llaves:

Para iterar sobre las llaves, se usa values():

Para iterar sobre las llaves y los valores simultáneamente, se usa el método items():

6.4.4 Restricciones sobre las llaves

No se puede usar cualquier objeto como llave de un diccionario. Las llaves deben ser de un tipo de datos inmutable. Por ejemplo, no se puede usar listas:

Típicamente, se usa números, tuplas y strings como llaves de los diccionarios.

6.5 Ejercicios

6.5.1 Listas

Ejercicio 01

Considere las siguientes listas:

Sin usar el computador, indique cuál es el resultado y el tipo de las siguientes expresiones. A continuación, verifique sus respuestas en el computador.

6.5.2 Tuplas

Ejercicio 01

Considere las siguientes asignaciones:

Sin usar el computador, indique cuál es el resultado y el tipo de las siguientes expresiones. A continuación, verifique sus respuestas en el computador.

6.5.3 Conjuntos

Ejercicio 01

Considere las siguientes asignaciones:

Sin usar el computador, indique cuál es el resultado y el tipo de las siguientes expresiones. A continuación, verifique sus respuestas en el computador.

6.5.4 Diccionarios

Ejercicio 01

Considere las siguientes asignaciones:

Sin usar el computador, indique cuál es el resultado y el tipo de las siguientes expresiones. A continuación, verifique sus respuestas en el computador.