📌 En síntesis: Estructuras arbóreas jerárquicas: propiedades de árboles binarios, inserción, búsqueda y algoritmos de recorrido In-Order, Pre-Order y Post-Order.
Guía técnica desarrollada por el equipo de Proyecto Luna para formación profesional y consulta técnica abierta.
📌
📌 Aprendizaje esperado
📌
Construir algoritmo simple, para la solución del problema utilizando listas, diccionarios y métodos.
En programación, una lista es una estructura de datos fundamental que permite almacenar múltiples elementos en una sola variable. En Python, las listas son colecciones de datos, ordenadas y mutables, lo que significa que puedes modificar, agregar o eliminar elementos después de su creación. Esta versatilidad las convierte en una herramienta clave para la resolución de problemas que requieren manipular grandes volúmenes de datos o realizar operaciones repetitivas. Una lista en Python se define utilizando corchetes [], y sus elementos pueden ser de cualquier tipo: números, cadenas de texto, booleanos (lógicos) e incluso otras listas. A diferencia de otras estructuras de datos más rígidas, las listas permiten mezclar tipos de datos, aunque en la práctica se recomienda mantener la coherencia del tipo de dato que contiene. El acceso a los elementos de una lista se realiza a través de su índice, comenzando desde 0. Por ejemplo, si tienes una lista con cinco elementos, el primero está en la posición 0 y el último en la posición 4. Esta característica es esencial para recorrer la lista con estructuras de control como for o while, facilitando tareas como búsquedas, cálculos o visualización de contenidos. Otra ventaja de las listas es su capacidad para crecer y reducir dinámicamente durante la ejecución del programa. Puedes utilizar métodos como append() para agregar un elemento al final, insert() para posicionarlo en un lugar específico, remove() para eliminar un elemento por su valor, y del para eliminarlo por su índice. Además, es posible combinar listas, copiarlas, ordenarlas y realizar múltiples operaciones útiles en contextos prácticos. En situaciones cotidianas, las listas resultan ideales para representar estructuras como listas de compras, registros de estudiantes, catálogos de productos, tareas por realizar o resultados de una evaluación. Su flexibilidad las convierte en la estructura por excelencia para almacenar y procesar información secuencial.
🚀 Introducción
Comprender a fondo el funcionamiento de las listas en Python es esencial para avanzar en el desarrollo de programas más complejos, ya que son la base para estructuras más avanzadas como pilas, colas, matrices o incluso bases de datos. Dominar su sintaxis, sus métodos nativos y su lógica de manipulación es un paso clave hacia una programación más eficiente, organizada y profesional.
En Python, una lista es una estructura de datos que permite almacenar múltiples valores en una sola variable. A diferencia de las variables simples que solo pueden guardar un único dato, una lista puede contener una secuencia de elementos ordenados, a los que se puede acceder, modificar, recorrer y eliminar de forma individual. Las listas son mutables, lo que significa que una vez creadas pueden modificarse: se pueden agregar o quitar elementos sin necesidad de crear una nueva lista. También son ordenadas, es decir, los elementos mantienen el orden en el que fueron agregados, y cada uno tiene un índice que comienza desde 0. En la Figura 1 destacamos las características clave del concepto listas 1.1. ¿Cómo se declara una lista? En Python, las listas se definen utilizando corchetes [], y los elementos se separan por comas:
Figura 1. Características clave de las listas
Se pueden modificar después de ser creadas. lista = [1, 2, 3] lista.append(4) # Agregar lista.remove(1) # Eliminar Mutables Los elementos mantienen su orden de inserción. lista = [“a”, “b”, “c”] # Siempre en el mismo orden Ordenadas
colores = [“rojo”, “azul”, “verde”]
Figura 2: Declaración de lista
Este ejemplo muestra una lista llamada colores que contiene tres cadenas de texto. Ejemplo: 1.2. Características clave de las listas
Figura 3: Ejemplo de lista
1.3.¿Para qué sirven las listas? Las listas son ideales para representar: Ejemplo simple: frutas = [“manzana”, “plátano”, “naranja”] print(frutas[0]) # Imprime: manzana frutas.append(“pera”) # Agrega “pera” al final
Las listas son esenciales para resolver problemas reales en programación, ya que permiten trabajar con grandes cantidades de información de manera estructurada, eficiente y escalable.
📌 Acceso a los elementos de una lista
En Python, cada elemento de una lista tiene una posición o índice, que representa su ubicación dentro de la estructura. Esta posición permite acceder directamente a cualquier elemento de la lista sin necesidad de recorrerla completamente. El primer elemento siempre tiene el índice 0. Por ejemplo, si tenemos una lista: nombres = [“Ana”, “Luis”, “Carlos”], entonces nombres[0] accederá a “Ana” y nombres[2] accederá a “Carlos”. Esto se observa en la Figura 4, donde se demuestra cómo se pueden recuperar elementos individuales usando sus posiciones. print(nombres[5]) # IndexError: list index out of
Figura 5: Acceso inválido a elementos de una lista
Si intentamos acceder a un índice que no existe, tendremos un error de: “IndexError: list index out of range”. Por ejemplo, en la Figura 5, al intentar acceder a nombres[5], el programa genera un error porque la lista solo tiene tres elementos (índices válidos del 0 al 2). Este tipo de error es común cuando no se controla adecuadamente el tamaño de las listas. También podemos ingresar con índices negativos. Por ejemplo, en la Figura 6 se muestran nombres[-1] retorna “Carlos” y nombres[-2] retorna “Luis”. Esta característica es muy útil cuando se necesita trabajar con los últimos elementos de una lista sin conocer su longitud exacta.
Figura 3: Uso de índices para acceder a listas
nombres = [“Ana”, “Luis”, “Carlos”] print(nombres[0]) # Imprime “Ana” print(nombres[2]) # Imprime “Carlos”
2.1. ¿Para qué sirve acceder a elementos? Acceder a los elementos de una lista es una operación fundamental en programación, ya que permite interactuar directamente con los datos almacenados. Esta acción no solo facilita la visualización de información puntual, sino que también posibilita su modificación, evaluación y comparación en contextos diversos. La Figura 7 ilustra los usos más comunes de este tipo de acceso, destacando su aplicación para mostrar datos específicos, actualizar valores, emplearlos en condiciones lógicas o validar información en posiciones determinadas.
Figura 7. Usos comunes del acceso a elementos en una lista
Figura 6. Uso de índices negativos en listas de Python
print(nombres[-1]) # Último elemento: “Carlos” print(nombres[-2]) # Penúltimo elemento: “Luis” Mostrar información específica Modificar datos existentes Usar un valor como parte de una operación o condición Comparar o validar datos en posiciones concretas
2.2.1. Recomendación Al trabajar con listas, es fundamental tener en cuenta ciertas recomendaciones para evitar errores comunes. 1. Siempre asegúrate de que el índice al que accedes existe en la lista. 2. Puedes usar len(lista) para conocer cuántos elementos tiene. La Figura 9 presenta un ejemplo sencillo en el que se emplea len() para contar las calificaciones disponibles, lo cual ayuda a prevenir errores por índices fuera de rango. 2.2. Ejemplo práctico Para ilustrar de manera concreta cómo se realiza el acceso y la modificación de elementos en una lista, se presenta un ejemplo práctico utilizando una lista de calificaciones. En este caso, se accede al segundo valor almacenado y, posteriormente, se actualiza la primera nota. La Figura 8 muestra el fragmento de código correspondiente, donde se emplea la sintaxis de índices para interactuar directamente con los datos, reforzando así los conceptos explicados en la sección anterior.
Figura 8: Acceso y modificación de elementos en una lista
calificaciones = [7.0, 5.5, 6.3] # Mostrar el segundo valor print(“Segunda nota:”, calificaciones[1]) # Modificar la primera nota calificaciones[0] = 6.8 print(“Nueva primera nota:”, calificaciones[0])
Figura 9: Contar elementos en una lista con len()
total = len(calificaciones) print(“Cantidad de notas:”, total)
Usar índices negativos puede ser útil cuando necesitas los últimos valores. El acceso por índice es una de las funcionalidades más poderosas de las listas en Python, ya que permite controlar y modificar datos de manera precisa, rápida y directa. Usar índices negativos puede ser útil cuando necesitas los últimos valores. El acceso por índice es una de las funcionalidades más poderosas de las listas en Python, ya que permite controlar y modificar datos de manera precisa, rápida y directa.
Inserción append() insert(pos, elemento) Agrega un nuevo elemento al final de la lista. Agrega un elemento en una posición específica, desplazando los demás. Actualización lista[indice] = nuevo_valor Modifica el valor de un elemento accediendo por su índice. Útil para corregir o actualizar datos sin recrear la lista. Eliminación remove(valor) del lista[indice]) Elimina el primer elemento que coincida con el valor indicado Elimina un elemento según su índice. del lista[indice]) Elimina todos los elementos de la lista. Método o Técnica Operación Descripción Tabla 1. Resumen de operaciones con listas en Python Una de las principales ventajas de las listas en Python es que son estructuras dinámicas: puedes agregar, eliminar o modificar sus elementos en cualquier momento. A continuación, se explican las operaciones básicas de inserción, borrado y actualización. 3.1. Inserciones (agregar elementos) Python ofrece varios métodos para agregar elementos a una lista: Agrega un nuevo elemento al final de la lista con append().
📌 Operaciones de los elementos de una lista
Agrega un elemento en una posición específica, desplazando los demás hacia la derecha utilizaremos insert().
Figura 10: Agregar elementos a una lista con append()
3.2. Eliminar elementos Existen varias formas de eliminar elementos de una lista: Elimina el primer elemento que coincida con el valor indicado. Para ello, utilizaremos remove(). tcolores = [“rojo”, “verde”] colores.append(“azul”) print(colores) # [“rojo”, “verde”, “azul”]
Figura 11: Insertar elementos en una lista con insert()
colores.insert(1, “amarillo”) print(colores) # [“rojo”, “amarillo”, “verde”, “azul”]
Figura 12: Eliminar elementos de una lista con remove()
colores.remove(“verde”) print(colores) # [“rojo”, “amarillo”, “azul”]
3.3. Actualización de elementos También es posible modificar directamente un valor accediendo por su índice: Elimina un elemento por su índice. Para esto utilizaremos del. Este procedimiento es útil cuando se necesita corregir o actualizar datos en una lista sin volver a crearla.
Figura 13: Eliminar un elemento por su índice con del
del colores[0] print(colores) # [“amarillo”, “azul”] Elimina todos los elementos de la lista. Para ello, utilizaremos clear().
Figura 14: Vaciar completamente una lista con clear()
Figura 15: Actualizar un valor en una lista mediante su índice
colores.clear() print(colores) # [] numeros = [10, 20, 30] numeros[1] = 25 print(numeros) # [10, 25, 30]
3.4. Importante para las buenas prácticas Adoptar buenas prácticas al trabajar con listas no solo mejora la legibilidad del código, sino que también reduce la posibilidad de errores en tiempo de ejecución. Es recomendable: 1. Asegurarse de que el índice existe antes de usar del o modificar un valor. 2. Evitar usar remove() si no estás seguro de que el valor esté presente (puede causar error). 3. Usar len(lista) para validar condiciones antes de modificar o borrar. En este ejemplo, se muestra cómo realizar operaciones comunes sobre una lista en Python, aplicando buenas prácticas de modificación de datos. Se parte de una lista inicial llamada productos que contiene dos elementos: “pan” y “leche”. A partir de esta base, se realizan tres tipos de operaciones fundamentales: agregar, actualizar y eliminar. Primero, se utiliza el método append() para agregar un nuevo elemento al final de la lista. Al ejecutar productos.append(“huevos”), el elemento “huevos” se añade como el tercer valor. Luego, se actualiza el segundo elemento de la lista, reemplazando “leche” por “yogurt” mediante la asignación directa a través del índice: productos[1] = “yogurt”. Esto demuestra cómo se puede modificar un valor existente en una posición específica. Finalmente, se utiliza el método remove() para eliminar un elemento por su valor, en este caso “pan”, con la instrucción productos.remove(“pan”). Ejemplo:
Figura 16: Aplicación de buenas prácticas en lista
productos = [“pan”, “leche”] productos.append(“huevos”) productos[1] = “yogurt” # actualizar productos.remove(“pan”) # eliminar print(productos) # [“yogurt”, “huevos”]
Después de aplicar estas tres operaciones —agregar, actualizar y eliminar—, la lista resultante contiene los elementos “yogurt” y “huevos”, como se observa al imprimir productos. Estas operaciones son fundamentales para trabajar con datos que cambian en el tiempo. Saber insertar, borrar y actualizar elementos permite construir programas interactivos, dinámicos y útiles en el mundo real.
⚙️ Recorrer listas en Python: estructuras for y while
Ejemplo práctico En programación, recorrer una lista significa acceder a cada uno de sus elementos, uno por uno, para analizarlos, procesarlos o modificarlos. Python ofrece dos estructuras fundamentales para hacerlo: for y while. 4.1. Recorrido con for El bucle o ciclo for es la forma más común y recomendada para recorrer listas en Python. Es directo, legible y evita errores con índices. ¿Cómo se utiliza? El for extrae automáticamente cada elemento de la lista y lo asigna a una variable temporal en cada iteración.
Figura 17: Estructura básica del bucle for en Python
Figura 18: Ejemplo de recorrido de una lista con for
for variable in lista: # bloque de código frutas = [“manzana”, “pera”, “uva”] for fruta in frutas: print(“Fruta actual:”, fruta)
En este ejemplo se ilustra cómo recorrer una lista utilizando un bucle for, una estructura muy utilizada en Python para iterar sobre colecciones de datos. En ete ejemplo tenemos una lista llamada frutas que contiene tres elementos: “manzana”, “pera” y “uva”. A continuación, se utiliza el bucle for fruta in frutas: para recorrer cada uno de los elementos de la lista. En cada iteración, la variable fruta toma el valor del siguiente elemento de la lista, lo que permite procesarlos uno por uno de forma ordenada. Dentro del bucle, se imprime un mensaje con el nombre de la fruta actual, utilizando print(“Fruta actual:”, fruta). Esto genera una salida secuencial que muestra el recorrido completo de la lista. El resultado en pantalla será una línea por cada fruta, permitiendo visualizar claramente cómo se accede a cada elemento mediante esta técnica de iteración. Este bucle imprimirá cada fruta una por una. Es ideal cuando no necesitas el índice, solo el valor. 4.2. Recorrido con while El bucle o ciclo while se usa menos con listas, pero es útil cuando necesitas mayor control sobre los índices, o cuando el recorrido depende de una condición específica. ¿Cómo se utiliza? Debes usar una variable de control (por ejemplo, i) para manejar el índice y asegurarte de incrementarlo manualmente.
Figura 19: Recorrer una lista con while usando índices
i = 0 while i < len(lista): # bloque de código usando lista[i] i += 1
Ejemplo práctico Este ejemplo muestra cómo recorrer una lista utilizando un bucle while, accediendo a los elementos mediante su índice. En el ejemplo tenemos una lista llamada frutas que contiene los elementos “manzana”, “pera” y “uva”. A diferencia del bucle for, en este caso se necesita una variable de control manual, llamada i, que se inicializa en 0 y que representará el índice o posición de cada elemento. La condición del bucle while es i < len(frutas), lo que significa que el ciclo se repetirá mientras el valor de i sea menor que la longitud de la lista. En cada iteración, se imprime el elemento correspondiente a la posición actual con frutas[i], acompañado de un mensaje que indica el índice. Luego, se incrementa el valor de i en uno con i += 1, para avanzar al siguiente elemento. Este ejemplo accede a los valores igual que el for, pero también permite usar el índice (i) dentro del ciclo.
Figura 20: Recorrido de una lista con while e impresión con índice
frutas = [“manzana”, “pera”, “uva”] i = 0 while i < len(frutas): print(f“Fruta en la posición {i}:”, frutas[i]) i += 1
4.3. ¿Cuándo usar for o while? Esto combina lo mejor del for con el control sobre los índices. Importante Como programador, debes elegir el bucle que mejor se adapta al propósito de tu algoritmo.
- Si solo necesitas procesar datos: for es simple, legible y eficiente.
- Si necesitas lógica más personalizada (por ejemplo, detener el bucle en una condición específica), while es una gran opción. En ambos casos, el dominio de estas estructuras te permite transformar listas de datos en información útil y estructurada. Tabla 2. Guía para seleccionar el tipo de bucle en Python
Figura 21: Imprimir elementos de una lista con sus posiciones
for con índice: range(len(lista)) frutas = [“manzana”, “pera”, “uva”] for i in range(len(frutas)): print(f”{i}: {frutas[i]}“) Situación ¿Qué usar? Quieres recorrer toda la lista fácilmente for Necesitas el índice para mostrar posiciones while o for con range() Vas a modificar elementos por posición for i in range(len(lista)) El recorrido depende de una condición externa while
🧩 Implementación en programación orientada a objeto
En programación orientada a objetos, puedes crear tus propias clases y usar listas como atributos para almacenar múltiples datos relacionados. Por ejemplo, en una clase Curso, puedes tener un atributo estudiantes que sea una lista para guardar los nombres de quienes se inscriben. Luego puedes crear un objeto curso_python = Curso(“Python Básico”) y usar agregar_estudiante() para añadir alumnos. Así usas listas como parte de tus objetos personalizados.
Figura 22: Uso de listas como atributos en una clase Python
class Curso: def init(self, nombre): self.nombre = nombre self.estudiantes = [] # atributo tipo lista def agregar_estudiante(self, estudiante): self.estudiantes.append(estudiante) def mostrar_lista(self): for e in self.estudiantes: print(f”- {e}“) # Uso curso_python = Curso(“Python Básico”) curso_python.agregar_estudiante(“Camila”)
🛠️ Desarrollo práctico
Caso de estudio: registro de estudiantes en un curso La institución “TechFormación” desea automatizar el registro de estudiantes inscritos en sus cursos. Se solicita crear un programa en Python que permita: 1. Registrar estudiantes ingresados por nombre. 2. Mostrar todos los estudiantes inscritos. 3. Eliminar un estudiante por nombre. 4. Mostrar la cantidad total de inscritos. Objetivo Crear una clase en Python que utilice listas para almacenar y gestionar información de estudiantes, permitiendo agregar nuevos registros y mostrar la lista de inscritos. El estudiante aplicará conceptos de listas, atributos de clase, métodos y estructuras de control. Código completo
Figura 23. Simulación de un sistema de inscripción a cursos con Python
Resultado terminar Explicación del ejercicio Creamos una clase llamada Curso que tiene dos atributos:
-
__nombre: representa el nombre del curso.
-
__estudiantes: es una lista privada que guarda los nombres de los estudiantes inscritos. Usamos métodos especiales:
-
get_nombre() y set_nombre() para acceder y modificar el nombre del curso.
-
get_estudiantes() y set_estudiantes() para acceder y modificar directamente la lista, con validación. También definimos métodos funcionales para interactuar con la lista:
-
agregar_estudiante(nombre): agrega un estudiante a la lista.
-
eliminar_estudiante(nombre): elimina un estudiante si está en la lista.
-
mostrar_estudiantes(): recorre la lista y la muestra ordenada.
-
total_inscritos(): indica cuántos estudiantes hay.
Figura 24. Ejecución del programa: agregar, eliminar y mostrar estudiantes
Reflexión Este desarrollo demuestra cómo las listas permiten almacenar múltiples datos relacionados en un solo atributo de clase. Al integrarlas en objetos, podemos construir aplicaciones organizadas, escalables y reutilizables. Además, los métodos permiten controlar y validar la manipulación de esa información, como agregar o eliminar estudiantes. Este es el tipo de lógica básica que más adelante puede extenderse a bases de datos, interfaces gráficas o aplicaciones web. Uso del objeto
- Se crea un objeto de la clase Curso.
- Se agregan estudiantes a través del método.
- Se cambia el nombre del curso con set_nombre().
- Se muestran los estudiantes y se cuenta cuántos hay. Durante esta semana, los y las estudiantes han explorado el uso de listas en Python como una estructura de datos clave para representar y manipular conjuntos de información en contextos reales. A través de actividades prácticas y reflexivas, han aprendido a crear listas, acceder a sus elementos, insertar, eliminar y actualizar datos, aplicando estructuras de control como for y while. Además, han desarrollado algoritmos simples que integran listas como base funcional, fortaleciendo su comprensión del comportamiento dinámico de estas estructuras. La integración con Programación Orientada a Objetos ha permitido ver cómo las listas pueden ser utilizadas dentro de clases para construir soluciones más organizadas y escalables. Este cierre reflexivo busca consolidar el aprendizaje, vinculando la teoría con la práctica y preparando a los estudiantes para enfrentar desafíos mayores en el desarrollo de software, donde el manejo eficiente de estructuras de datos es esencial para construir programas robustos y funcionales.
💡 Conclusión
🚀 Potencia tus proyectos tecnológicos con Proyecto Luna
En Proyecto Luna desarrollamos arquitectura de software de alto rendimiento, optimización de bases de datos críticas y soluciones aplicadas de inteligencia artificial y automatización para empresas y profesionales.
- 💼 Soluciones de ingeniería: Conoce nuestras capacidades y casos de estudio en proyectoluna.com/work/.
- 🛡️ Seguridad y auditoría: Orientación técnica y respuesta ante incidentes en ¿Te han hackeado?.
- 📩 Contacto directo: Escríbenos a través de nuestro formulario de contacto o a
contacto@proyectoluna.com.
📚 Fuentes y lecturas recomendadas
- Chazallet, M. (2020). Programación orientada a objetos en Python. Ediciones Informáticas. http://descubridor.santotomas.cl/primo_library/libweb/action/display.do?tabs=details Tab&ct=display&fn=search&doc=cst_aleph000043172&indx=1&recIds=cst_aleph00004 3172&recIdxs=0&elementId=0&renderMode=poppedOut&displayMode=full&frbrVers ion=&dscnt=1&scp.scps=scope%3A%28cst_aleph%29%2Cscope%3A%28cst_digitool% 29&frbg=&tab=cst_tab&vl(87563938UI0)=any&dstmp=1753287226753&srt=rank&mode =Basic&dum=true&tb=t&vl(1UIStartWith0)=exact&vl(freeText0)=Introducci%C3%B3n +a+la+programaci%C3%B3n+con+Python.&vl(107694436UI1)=all_items&vid=CST Downey, A. (2002). Aprenda a pensar como un programador con Python. Green Tea Press. http://descubridor.santotomas.cl/primo_library/libweb/action/display.do?tabs=details Tab&ct=display&fn=search&doc=cst_aleph000048949&indx=1&recIds=cst_aleph00004 8949&recIdxs=0&elementId=0&renderMode=poppedOut&displayMode=full&frbrVers ion=&dscnt=1&scp.scps=scope%3A%28cst_aleph%29%2Cscope%3A%28cst_digitool% 29&frbg=&tab=cst_tab&vl(87563938UI0)=any&dstmp=1753287839287&srt=rank&mode =Basic&dum=true&tb=t&vl(1UIStartWith0)=exact&vl(freeText0)=Aprenda+a+pensar+c omo+un+programador+con+Python.&vl(107694436UI1)=all_items&vid=CST Marzal, M., y García, R. (2011). . Pearson. http://descubridor.santotomas.cl/primo_library/libweb/action/display.do?tabs=details Tab&ct=display&fn=search&doc=cst_aleph000062601&indx=1&recIds=cst_aleph00006 2601&recIdxs=0&elementId=0&renderMode=poppedOut&displayMode=full&frbrVers ion=&dscnt=1&scp.scps=scope%3A%28cst_aleph%29%2Cscope%3A%28cst_digitool% 29&frbg=&tab=cst_tab&vl(87563938UI0)=any&dstmp=1753287991817&srt=rank&mode =Basic&dum=true&tb=t&vl(1UIStartWith0)=exact&vl(freeText0)=Python+3%3A+los+fu ndamentos+del+lenguaje.&vl(107694436UI1)=all_items&vid=CST




















