Fundamentos de las estructuras de datos en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos sobre estructuras de datos en Python. Los principales contenidos de las estructuras de datos con las que trabajaremos son: listas, tuplas, diccionarios y conjuntos.

Logros

  • Listas
  • Comprensiones de listas (List Comprehensions)
  • Tuplas
  • Diccionarios
  • Conjuntos

Listas

En Python, las listas son contenedores versátiles capaces de almacenar varios tipos de objetos. Aquí, exploraremos las operaciones fundamentales de las listas, como la creación, el acceso a valores, la actualización de valores, la adición de valores y la eliminación de valores.

Crear una lista

Las listas se definen con valores separados por comas y encerrados entre corchetes. Los elementos de una lista no necesitan ser del mismo tipo.

>>> l1 = [1, 2, 3, 'a', 'hello']
>>> l1
[1, 2, 3, 'a', 'hello']

>>> l2 = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday']
>>> l2
['monday', 'tuesday', 'wednesday', 'thursday', 'friday']

Acceder a un valor

Utiliza el índice de subíndice para acceder a los valores de la lista.

>>> print("l1[0] = ", l1[0])
l1[0] =  1

Puedes usar la forma entre corchetes para interceptar caracteres de la siguiente manera, lo que se llama un segmento (slice). Un segmento es una forma de extraer un rango de elementos de una lista.

list_name[Inicio:Fin:Paso]

El primer índice (Inicio) es el índice de inicio y el segundo índice (Fin) es el índice de fin. El tercer índice (Paso) es el incremento (por defecto 1).

>>> print("l2[1:3] = ", l2[1:3])
l2[1:3] =  ['tuesday', 'wednesday']

Actualizar un valor

Puedes actualizar un valor utilizando el índice de subíndice para acceder al valor y luego asignarle un nuevo valor:

>>> l1[0] = 10
>>> l1
[10, 2, 3, 'a', 'hello']

Añadir un valor

Puedes añadir valores a la lista utilizando el método append().

list_name.append(valor)

>>> l1.append('b')
>>> l1
[10, 2, 3, 'a', 'hello', 'b']

>>> l2.append('statuday')
>>> l2
['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'statuday']

Eliminar un valor

Puedes eliminar valores de la lista utilizando la palabra clave del. Este método elimina el elemento en el índice especificado de la lista.

del list_name[índice]

>>> del l1[0]
>>> l1
[2, 3, 'a', 'hello', 'b']

Y también puedes utilizar el método remove() para eliminar el valor especificado de la lista.

list_name.remove(valor)

>>> l1.remove('a')
>>> l1
[2, 3, 'hello', 'b']

Otras funciones de listas

Puedes utilizar la función len() para obtener la longitud de una lista.

>>> print("Longitud de l1 = ", len(l1))
Longitud de l1 =  5

Y la función sorted() para ordenar la lista.

>>> print("Lista ordenada de l2 = ", sorted(l2))
Lista ordenada de l2 =  ['friday', 'monday', 'thursday', 'tuesday', 'wednesday']

Comprensiones de listas (List Comprehensions)

La comprensión de listas es una forma concisa y poderosa de crear listas en Python mediante la iteración sobre un iterable existente, como una lista, y la aplicación de una expresión a cada elemento para crear una nueva lista.

El formato de una comprensión de listas se puede entender como un bucle for. Y la sintaxis de una comprensión de listas es:

new_list = [expression for item in old_list]
new_list = [expression for item in old_list if condition]

  • new_list: La lista resultante generada a partir de la expresión para cada elemento de la lista original.
  • expression: La operación o transformación aplicada a cada elemento de la lista original para generar la nueva lista.
  • item: La variable que representa cada elemento de la lista original.
  • old_list: La lista existente utilizada para generar la nueva lista.
  • condition (opcional): Una condición de filtrado que se puede aplicar para incluir solo ciertos elementos de la lista original según un criterio especificado.

Práctica de comprensiones de listas

Practiquemos las comprensiones de listas en la consola de Python:

>>> ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> even_list = [item for item in ls if item % 2 == 0]
>>> even_list
[2, 4, 6, 8, 10]

En este ejemplo, even_list contendrá solo los números pares de la lista ls.

Las comprensiones de listas proporcionan una forma concisa y legible de manipular listas, lo que hace que el código de Python sea más expresivo y eficiente.

Tuplas

Las tuplas son similares a las listas en Python, con la excepción de que los elementos de una tupla son inmutables, lo que significa que no se pueden cambiar después de su creación. Los elementos de las tuplas se encierran entre () y se separan por ,.

Crear una tupla

Crea una tupla con los siguientes elementos:

>>> tup1 = ('Google', 'Run', 'Python')
>>> tup2 = (1, 2, 3, 4, 5)
>>> empty_tup = ()

>>> tup1
('Google', 'Run', 'Python')
>>> tup2
(1, 2, 3, 4, 5)
>>> empty_tup
()

Acceder a los elementos de una tupla

Accede a los elementos de las tuplas utilizando índices:

>>> print(tup1[0])
Google

>>> print(tup2[1:3])
(2, 3)

>>> print(empty_tup[0])
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
IndexError: tuple index out of range      ## Se produce un error porque la tupla está vacía.

Combinar tuplas

Si bien las tuplas no se pueden modificar, se pueden combinar:

>>> tup3 = tup1 + tup2
>>> print(tup3)
('Google', 'Run', 'Python', 1, 2, 3, 4, 5)

Las tuplas ofrecen una forma confiable de almacenar datos que no deben modificarse, brindando estabilidad e integridad a tus programas de Python.

Diccionarios

Los diccionarios en Python son estructuras de datos versátiles y mutables que almacenan pares clave-valor.

Cada par clave-valor está separado por dos puntos, y cada par está separado por una coma, con todo el diccionario encerrado entre llaves {}.

d = {clave1 : valor1, clave2 : valor2, clave3 : valor3 }

Las claves en un diccionario deben ser únicas, pero los valores pueden duplicarse.

Crear un diccionario

Crea diccionarios con pares clave-valor:

>>> dict1 = {'name': 'James', "age": 23, "phone": "12345"}
>>> dict2 = {}

>>> dict1
{'name': 'James', 'age': 23, 'phone': '12345'}
>>> dict2
{}

Acceder a los elementos de un diccionario

Accede a los pares clave-valor utilizando la clave entre corchetes [] o la función get():

>>> print(dict1["name"])
James

>>> print(dict2["name"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'name'

>>> print(dict2.get("name"))
None

Usar dict[clave] para acceder a una clave que no existe en el diccionario genera una excepción KeyError. Sin embargo, dict.get(clave) devuelve None si la clave no se encuentra en el diccionario.

Modificar un diccionario

Agrega o modifica entradas en un diccionario asignando valores a claves:

>>> dict2["name"] = "Lily"
>>> dict1["name"] = "Bob"

>>> dict2["name"]
'Lily'
>>> dict1["name"]
'Bob'

Eliminar elementos de un diccionario

Elimina pares clave-valor usando del dict[clave] o borra todo el diccionario usando dict.clear():

>>> del dict1["name"]
>>> print(dict1)

{'age': 23, 'phone': '12345'}

>>> dict2.clear()
>>> print(dict2)

{}

Los diccionarios ofrecen una forma flexible de almacenar y manipular datos, lo que los hace esenciales para diversas tareas en la programación de Python.

Conjuntos (Sets)

Los conjuntos en Python son colecciones desordenadas de elementos únicos. Se pueden crear utilizando llaves {} o la función set().

Crear un conjunto

Para crear un conjunto vacío, debes usar set() en lugar de {}, ya que {} se utiliza para crear un diccionario vacío. Crea conjuntos utilizando diferentes métodos:

>>> set1 = set()
>>> print(set1)
set()

>>> set2 = {'apple', 'orange', 'banana'}
>>> print(set2)
{'banana', 'apple', 'orange'}

>>> set3 = set("Hello World!")
>>> print(set3)
{'o', 'H', 'W', ' ', 'd', 'r', '!', 'e', 'l'}

Añadir un elemento

Añade elementos a un conjunto utilizando los métodos add() o update():

>>> set1.add('apple')
>>> print(set1)
{'apple'}

>>> set2.update({'orange', 'pear'})
>>> print(set2)
{'apple', 'orange', 'banana', 'pear'}

Eliminar un elemento

Elimina elementos de un conjunto utilizando los métodos discard() o remove().
El método discard() no genera un error si el elemento no está presente en el conjunto, mientras que el método remove() sí lo hace.

>>> set1.remove('apple')
>>> print(set1)
set()

>>> set1.discard('banana')
>>> print(set1)
set()

Los conjuntos proporcionan una forma conveniente de trabajar con colecciones de elementos únicos en Python, lo que los hace útiles para diversas tareas, como eliminar duplicados o comprobar la pertenencia.

Resumen

¡Felicidades! Has completado el laboratorio (Lab) de estructuras de datos.

En este laboratorio, has aprendido las estructuras de datos básicas de Python y cuándo y cómo utilizar estas estructuras de datos para resolver problemas.