2: Estructuras de Datos

2.1 Listas: Tu primera colección de datos

Una lista es una de las estructuras de datos más versátiles y comúnmente usadas en Python. Piensa en una lista como un cajón que puede guardar una colección de objetos en un orden específico. Cada objeto, o elemento, tiene un lugar único, que se identifica por su índice.

Características principales de las listas:

  • Ordenadas: Los elementos tienen un orden fijo y definido.
  • Modificables: Puedes añadir, eliminar o cambiar elementos.
  • Permiten duplicados: Pueden contener el mismo valor más de una vez.

Crear y acceder a listas

Las listas se definen usando corchetes [], con los elementos separados por comas. El primer elemento tiene el índice 0, el segundo el 1, y así sucesivamente.

# Crear una lista de frutas
frutas = ["manzana", "banana", "uva", "naranja"]

# Acceder a un elemento por su índice
print(frutas[0])  # Salida: manzana
print(frutas[2])  # Salida: uva

# También puedes usar índices negativos para acceder desde el final
print(frutas[-1]) # Salida: naranja

Métodos comunes de listas

Python ofrece varios métodos para trabajar con listas.

  • append(): Añade un elemento al final de la lista.

    frutas.append("kiwi")
    print(frutas) # Salida: ['manzana', 'banana', 'uva', 'naranja', 'kiwi']
    
  • insert(): Inserta un elemento en una posición específica.

    frutas.insert(1, "mango")
    print(frutas) # Salida: ['manzana', 'mango', 'banana', 'uva', 'naranja', 'kiwi']
    
  • remove(): Elimina la primera ocurrencia de un valor.

    frutas.remove("uva")
    print(frutas) # Salida: ['manzana', 'mango', 'banana', 'naranja', 'kiwi']
    
  • pop(): Elimina y devuelve el elemento en un índice dado.

    fruta_eliminada = frutas.pop(0)
    print(fruta_eliminada) # Salida: manzana
    print(frutas)          # Salida: ['mango', 'banana', 'naranja', 'kiwi']
    

2.2 Tuplas: Colecciones inmutables

Una tupla es similar a una lista, pero con una diferencia clave: ¡es inmutable! Esto significa que una vez que la creas, no puedes cambiar, añadir o eliminar sus elementos. Piensa en una tupla como una lista que está "congelada".

Características principales de las tuplas:

  • Ordenadas: Al igual que las listas, mantienen un orden definido.
  • Inmutables: No se pueden modificar una vez creadas.
  • Permiten duplicados: Pueden contener valores repetidos.

Crear y usar tuplas

Las tuplas se definen usando paréntesis (). Se usan a menudo para agrupar datos que no deberían cambiar, como coordenadas o datos de un registro.

# Crear una tupla de coordenadas
coordenadas = (10.5, 20.3)

# Acceder a los elementos (igual que en las listas)
print(coordenadas[0]) # Salida: 10.5

# Intentar modificarla resultará en un error
# coordenadas[0] = 12.0 # Esto causará un TypeError

2.3 Diccionarios: Datos con clave y valor

Un diccionario es una estructura de datos que almacena información en pares de clave-valor. A diferencia de las listas y tuplas, donde accedes a los datos por un índice numérico, en un diccionario accedes a los valores a través de sus claves, que pueden ser cadenas de texto o números.

Características principales de los diccionarios:

  • No ordenados (en versiones anteriores a Python 3.7): El orden de inserción no está garantizado.
  • Modificables: Puedes añadir, cambiar o eliminar pares clave-valor.
  • Las claves deben ser únicas: No puedes tener dos claves iguales.

Crear y manipular diccionarios

Los diccionarios se definen usando llaves {}. Cada par clave-valor se separa por dos puntos :.

# Crear un diccionario de un usuario
usuario = {
    "nombre": "Carlos",
    "edad": 35,
    "ciudad": "Madrid"
}

# Acceder a un valor a través de su clave
print(usuario["nombre"]) # Salida: Carlos

# Añadir un nuevo par clave-valor
usuario["email"] = "carlos@ejemplo.com"
print(usuario) # Salida: {'nombre': 'Carlos', 'edad': 35, 'ciudad': 'Madrid', 'email': 'carlos@ejemplo.com'}

# Modificar un valor existente
usuario["edad"] = 36
print(usuario) # Salida: {'nombre': 'Carlos', 'edad': 36, 'ciudad': 'Madrid', 'email': 'carlos@ejemplo.com'}

# Eliminar un par clave-valor
del usuario["ciudad"]
print(usuario) # Salida: {'nombre': 'Carlos', 'edad': 36, 'email': 'carlos@ejemplo.com'}

2.4 Conjuntos: Colecciones sin duplicados

Un conjunto (o set) es una colección desordenada de elementos únicos. Los conjuntos son útiles cuando necesitas almacenar una colección de elementos y asegurarte de que no haya duplicados.

Características principales de los conjuntos:

  • No ordenados: Los elementos no tienen un índice.
  • Únicos: No permiten elementos duplicados.
  • Modificables: Puedes añadir o eliminar elementos.

Crear y usar conjuntos

Los conjuntos se definen usando llaves {} o la función set(). Si intentas añadir un elemento que ya existe, no hará nada.

# Crear un conjunto con algunos duplicados (se eliminarán automáticamente)
numeros = {1, 2, 3, 2, 4, 1, 5}
print(numeros) # Salida: {1, 2, 3, 4, 5}

# Añadir un nuevo elemento
numeros.add(6)
print(numeros) # Salida: {1, 2, 3, 4, 5, 6}

# Eliminar un elemento
numeros.remove(3)
print(numeros) # Salida: {1, 2, 4, 5, 6}

Este módulo te ha dado una visión general de las principales estructuras de datos en Python. Elegir la estructura correcta es crucial para escribir código eficiente y organizado. ¿Qué te parece si continuamos con el siguiente módulo para dominar el control de flujo y la lógica de programación?