Programación Orientada a Objetos en Python: Clases y Objetos

🐍 Python — POO Programación Orientada a Objetos en Python: Clases, Objetos y Herencia Aprende Programación Orientada a Objetos (POO) en Python desde cero. Clases, objetos, atributos, métodos, herencia y polimorfismo con ejercicios resueltos paso a paso. ⏱ 18 min de lectura 🎯 Intermedio 💻 Código ejecutable ✅ Ejercicios resueltos 📚 Contenido de esta guía ¿Qué es la POO? Crear una clase: class e __init__ Atributos y métodos ¿Qué es self? Herencia Polimorfismo Ejercicio práctico: Sistema de biblioteca 1 ¿Qué es la Programación Orientada a Objetos? La Programación Orientada a Objetos (POO) es un paradigma que organiza el código en torno a objetos : entidades que combinan datos (atributos) y comportamientos (métodos). Es la base de frameworks como Django y librerías como Pandas . 💡 Analogía del mundo real Piensa en un automóvil : tiene atributos (color, marca, velocidad) y co...

Listas en Python: Guía Completa con Ejercicios Resueltos

🐍 Python — Estructuras de Datos

Listas en Python: Guía Completa con Ejercicios Resueltos Paso a Paso

Aprende a crear, modificar, recorrer y ordenar listas en Python con ejemplos prácticos y ejercicios resueltos. La estructura de datos más usada explicada en español.

⏱ 12 min de lectura 🎯 Todos los niveles 💻 Código ejecutable ✅ Ejercicios resueltos

1¿Qué es una lista en Python?

Una lista es una colección ordenada y modificable de elementos. Es la estructura de datos más usada en Python y puede contener cualquier tipo de dato: números, textos, booleanos o incluso otras listas.

💡 Características de las listas
  • Se definen con corchetes [ ]
  • Son ordenadas: cada elemento tiene un índice
  • Son mutables: se pueden modificar después de crear
  • Permiten duplicados: pueden tener elementos repetidos
  • Pueden mezclar distintos tipos de datos

2Crear y acceder a listas

Para crear una lista se usan corchetes. Para acceder a sus elementos se usa el índice, que empieza en 0.

crear_listas.py
# Crear listas en Python
frutas   = ["manzana", "banano", "naranja", "fresa"]
numeros  = [10, 20, 30, 40, 50]
mixta    = ["Python", 3.11, True, 42]
vacia    = []  # lista vacía

# Acceder por índice (empieza en 0)
print(frutas[0])   # manzana  → primer elemento
print(frutas[2])   # naranja  → tercer elemento
print(frutas[-1])  # fresa    → último elemento
print(frutas[-2])  # naranja  → penúltimo elemento

# Longitud de la lista
print("Total de frutas:", len(frutas))  # 4
▶ Salida
manzana
naranja
fresa
naranja
Total de frutas: 4
🔑 Índices negativos
Python permite usar índices negativos: -1 es el último elemento, -2 el penúltimo, etc. Muy útil para acceder al final de una lista sin saber su tamaño.

3Métodos esenciales de listas

Las listas tienen métodos integrados para agregar, eliminar y modificar elementos. Estos son los más importantes:

Método¿Qué hace?Ejemplo
append(x)Agrega al finallista.append("nuevo")
insert(i, x)Inserta en posición ilista.insert(1, "medio")
remove(x)Elimina primera ocurrencia de xlista.remove("manzana")
pop(i)Elimina y retorna el elemento en ilista.pop(0)
sort()Ordena la lista (modifica)lista.sort()
reverse()Invierte el ordenlista.reverse()
count(x)Cuenta cuántas veces aparece xlista.count("a")
index(x)Retorna el índice de xlista.index("fresa")
clear()Vacía la listalista.clear()
metodos_lista.py
colores = ["rojo", "verde", "azul"]

# Agregar elementos
colores.append("amarillo")
print(colores)  # ['rojo', 'verde', 'azul', 'amarillo']

colores.insert(1, "naranja")
print(colores)  # ['rojo', 'naranja', 'verde', 'azul', 'amarillo']

# Eliminar elementos
colores.remove("verde")
print(colores)  # ['rojo', 'naranja', 'azul', 'amarillo']

eliminado = colores.pop(0)
print(f"Eliminado: {eliminado}")  # Eliminado: rojo
print(colores)  # ['naranja', 'azul', 'amarillo']

# Información de la lista
print("Posición de 'azul':", colores.index("azul"))  # 1
print("Total elementos:", len(colores))              # 3

4Recorrer listas con bucles

Una de las operaciones más comunes es recorrer todos los elementos de una lista. Python ofrece varias formas elegantes de hacerlo:

recorrer_lista.py
frutas = ["manzana", "banano", "naranja", "fresa"]

# Forma 1: for directo (más común)
print("--- Mis frutas ---")
for fruta in frutas:
    print(f"  • {fruta}")

# Forma 2: con índice usando enumerate()
print("\n--- Con número ---")
for i, fruta in enumerate(frutas, 1):
    print(f"  {i}. {fruta}")

# Forma 3: con range() y len()
print("\n--- Con índice ---")
for i in range(len(frutas)):
    print(f"  frutas[{i}] = {frutas[i]}")
▶ Salida
--- Mis frutas ---
  • manzana
  • banano
  • naranja
  • fresa

--- Con número ---
  1. manzana
  2. banano
  3. naranja
  4. fresa

--- Con índice ---
  frutas[0] = manzana
  frutas[1] = banano
  frutas[2] = naranja
  frutas[3] = fresa

5Slicing: cortar listas

El slicing permite extraer partes de una lista usando la sintaxis lista[inicio:fin:paso]. Es una de las características más poderosas de Python.

slicing.py
numeros = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

print(numeros[2:5])    # [20, 30, 40] → índice 2 al 4
print(numeros[:4])     # [0, 10, 20, 30] → del inicio al 3
print(numeros[6:])     # [60, 70, 80, 90] → del 6 al final
print(numeros[::2])    # [0, 20, 40, 60, 80] → de 2 en 2
print(numeros[::-1])   # [90, 80, ... 0] → lista invertida
print(numeros[1:8:3])  # [10, 40, 70] → del 1 al 7, paso 3

6Ordenar y buscar en listas

ordenar_buscar.py
notas = [3.5, 4.8, 2.1, 4.0, 3.9, 4.5, 1.8]

# Ordenar (modifica la lista original)
notas.sort()
print("Ascendente:", notas)

notas.sort(reverse=True)
print("Descendente:", notas)

# sorted() crea una nueva lista sin modificar la original
original = [5, 2, 8, 1, 9]
ordenada = sorted(original)
print("Original:", original)
print("Ordenada:", ordenada)

# Buscar: in, min, max, sum
print("¿Está 4.8?", 4.8 in notas)
print("Nota mínima:", min(notas))
print("Nota máxima:", max(notas))
print("Promedio:", sum(notas) / len(notas))

7🏋️ Ejercicios Prácticos Resueltos

📋 Ejercicio 1: Gestión de lista de compras

Crea un programa que permita al usuario agregar, eliminar y mostrar productos de una lista de compras.

lista_compras.py
def gestionar_compras():
    compras = []

    while True:
        print("\n=== LISTA DE COMPRAS ===")
        print("1. Ver lista")
        print("2. Agregar producto")
        print("3. Eliminar producto")
        print("4. Salir")

        opcion = input("\nElige una opción: ")

        if opcion == "1":
            if not compras:
                print("Lista vacía 🛒")
            else:
                for i, producto in enumerate(compras, 1):
                    print(f"  {i}. {producto}")

        elif opcion == "2":
            producto = input("Nombre del producto: ")
            compras.append(producto)
            print(f"✅ '{producto}' agregado")

        elif opcion == "3":
            producto = input("Producto a eliminar: ")
            if producto in compras:
                compras.remove(producto)
                print(f"🗑 '{producto}' eliminado")
            else:
                print("Producto no encontrado ❌")

        elif opcion == "4":
            print("¡Hasta luego! 👋")
            break

gestionar_compras()
📋 Ejercicio 2: Estadísticas de notas

Dado un grupo de notas, calcula la mayor, menor, promedio y cuántos estudiantes aprobaron.

estadisticas_notas.py
def estadisticas_notas(notas):
    aprobados  = [n for n in notas if n >= 3.0]
    reprobados = [n for n in notas if n < 3.0]

    print("\n===== ESTADÍSTICAS =====")
    print(f"Total estudiantes: {len(notas)}")
    print(f"Nota más alta:     {max(notas)}")
    print(f"Nota más baja:     {min(notas)}")
    print(f"Promedio:          {sum(notas)/len(notas):.2f}")
    print(f"Aprobados:         {len(aprobados)}")
    print(f"Reprobados:        {len(reprobados)}")

    notas_ord = sorted(notas, reverse=True)
    print(f"Ranking: {notas_ord}")

# Prueba con datos de ejemplo
mis_notas = [4.2, 2.8, 3.9, 4.7, 1.5, 3.3, 4.0, 2.1]
estadisticas_notas(mis_notas)
▶ Salida
===== ESTADÍSTICAS =====
Total estudiantes: 8
Nota más alta:     4.7
Nota más baja:     1.5
Promedio:          3.31
Aprobados:         5
Reprobados:        3
Ranking: [4.7, 4.2, 4.0, 3.9, 3.3, 2.8, 2.1, 1.5]

📋 ¿Te fue útil esta guía sobre listas?

Déjanos un comentario con tus dudas. Comparte con tus compañeros y suscríbete para más ejercicios resueltos.

Python Listas Estructuras de datos Ejercicios resueltos Programación
📖 Continúa aprendiendo
  • Diccionarios en Python — Guía Completa con Ejercicios
  • Funciones en Python: def, return y parámetros
  • Programación Orientada a Objetos en Python

Comentarios

Entradas populares de este blog

Ejercicios de Python para Principiantes: Guía Paso a Paso con Ejemplos

Programación Orientada a Objetos en Python: Clases y Objetos

Diccionarios en Python: Guía Completa con Ejemplos