1
Informe Técnico: Investigación de
Estructuras de Datos (Listas en Python)
Fecha: 15 de abril de 2026
Materia: Programación y Estructuras de Datos
Asunto: Análisis exhaustivo de los hallazgos sobre la manipulación de listas en
Python.
I. Descripción del Ejercicio
1. ¿Qué es una lista y cómo se declara?
Una lista es una colección de elementos ordenados. Se caracteriza por ser
mutable (puedes cambiar sus elementos) y por permitir elementos duplicados.
Cómo se declara: Se utilizan corchetes [] y los elementos se separan por comas
Lista vacía: mi_lista = []
Lista con elementos: dias = ["Lunes", "Martes", 40, 5.67, True]
Tipos de datos: Pueden contener strings, enteros, flotantes, booleanos e incluso
otras listas (listas anidadas)
2. Operaciones principales
Existen diferentes operaciones principales como:
● Acceso por índice: Los índices comienzan en 0. Para el primer elemento
usas lista [0]
● Índices negativos: Puedes acceder desde el final hacia el principio usando
-1 para el último elemento, -2 para el penúltimo, etc.
● Slicing (Sublistas): Puedes extraer una porción de la lista usando
lista[inicio:fin]. El índice final no se incluye en el resultado
● Agregar elementos: Aunque el video es introductorio, en Python se usan
métodos como. append(valor) para añadir al final o. insert(indice, valor)
para una posición específica.
2
● Eliminar: Se utilizan comandos como el de la lista [indice].
remove(valor) o. pop ().
● Ordenar: Se usa el método. sort() para ordenar la lista original o la
función sorted(lista) para obtener una copia ordenada.
3. Diferencias con otras estructuras
● Listas vs. Tuplas: Las listas usan [] y son mutables (puedes
modificarlas). Las tuplas usan () y son inmutables (no cambian una vez
creadas), lo que las hace más rápidas y seguras para datos constantes.
● Listas vs. Conjuntos (Sets): Los conjuntos usan {} y no permiten
duplicados. Además, los elementos en un conjunto no tienen un orden
definido, a diferencia de las listas.
4. Optimización en programas grandes
Para manejar listas de forma eficiente en proyectos de gran escala:
● List Comprehensions: Es una forma más rápida y elegante de crear
listas que usar bucles for tradicionales.
● Evitar inserciones al inicio: Insertar elementos al principio de una lista
(insert (0, valor)) es lento en listas grandes porque Python debe desplazar
todos los demás elementos. Es mejor usar [Link] si necesitas
agregar elementos en ambos extremos.
● Uso de generadores: Si solo necesitas iterar sobre los datos una vez y la
lista es inmensa, un generador ahorra mucha memoria RAM.
5. Casos de uso comunes
● Almacenamiento de registros: Listas de usuarios, productos o lecturas
de sensores.
● Pilas y Colas: Implementar estructuras donde el último en entrar es el
primero en salir (LIFO) o el primero en entrar es el primero en salir
(FIFO).
● Matrices: Listas de listas para representar tablas de datos o cuadrículas
de juegos.
● Búferes de datos: Para acumular información temporalmente antes de
procesarla.
3
II. PREGUNTAS REFLEXIVAS
1. Modificación Directa vs. Copias de Listas
La distinción radica en cómo Python gestiona la memoria. Las listas son objetos
referenciados.
Modificación Directa (Referencia): Al asignar lista b = lista a, no estás
creando una nueva lista, sino un segundo "puntero" al mismo lugar en la
memoria. Si modificas lista b, los cambios se reflejarán automáticamente en
lista a. Esto es útil para ahorrar memoria, pero peligroso si necesitas preservar
los datos originales.
Trabajar con Copias: Al usar lista b = lista [Link]() o el slicing lista_b =
lista_a[:], Python reserva un nuevo espacio en memoria.
Riesgo técnico: Si la lista contiene otras listas dentro (listas anidadas), una
copia simple (copy()) solo copiará la estructura superficial. Para una
independencia total, se requiere una copia profunda (deepcopy).
2. Problemas de Rendimiento en Listas Grandes
Cuando el volumen de datos crece significativamente (cientos de miles o
millones de registros), surgen cuellos de botella:
1. Costo de Inserción/Eliminación: Operaciones como insert (0, valor)
o pop (0) obligan a Python a desplazar todos los elementos restantes
en la memoria, lo que significa que el tiempo de ejecución crece
linealmente con el tamaño de la lista.
2. Consumo de Memoria: Las listas de Python almacenan referencias
a objetos, no los valores crudos. Esto consume mucha más memoria
que un arreglo de C++ o una matriz de NumPy.
3. Búsquedas Ineficientes: Verificar si un elemento existe con if x in
lista requiere recorrer la lista elemento por elemento hasta encontrarlo.
En una lista de un millón de elementos, esto es extremadamente lento
comparado con otras estructuras.
4
3. Solución de Problemas Reales
Las listas son fundamentales para resolver problemas donde el orden
secuencial es la prioridad:
Gestión de Inventarios y Eventos: Ideales para manejar registros dinámicos de
asistentes o productos donde el orden de llegada o registro es relevante.
Procesamiento de Datos Estadísticos: Permiten almacenar series de datos
(como el PIB histórico o frecuencias de una encuesta) para luego aplicar
cálculos como promedios o desviaciones estándar mediante bucles.
Algoritmos de Simulación: Se utilizan para representar colas de espera (FIFO)
o pilas de tareas (LIFO) en sistemas operativos o aplicaciones de logística.
Automatización de Reportes: Facilitan la recolección de resultados de
diversas fuentes para generar un informe final estructurado.
4. Ventajas y Desventajas Comparativas