Qué son realmente las listas de Python

Explicación de cómo funcionan las listas en CPython: estructuras internas, crecimiento amortizado, accesos O(1) y costes de insertar o borrar, y cuándo usar alternativas como deque

13 sept 2025 • 4 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Qué son realmente las listas de Python y por qué se comportan como lo hacen. A simple vista una lista parece una estructura dinámica y amigable: creas una lista, añades elementos con append y accedes por índice con sintaxis sencilla. Pero bajo esa apariencia hay una implementación concreta en C que explica su rendimiento y sus limitaciones.

Cuando ejecutas python en tu máquina lo que realmente corres es CPython, la implementación más extendida del lenguaje escrita en C. Cada objeto de Python que creas está respaldado por estructuras C. La base es PyObject, que almacena el contador de referencias ob_refcnt y un puntero ob_type que indica el tipo del objeto y apunta a la tabla de métodos de ese tipo. Gracias a esto funcionan la gestión de memoria por referencias y el despacho dinámico de métodos.

Para objetos de tamaño variable existe PyVarObject que añade ob_size, el tamaño lógico del objeto. En contenedores como listas y tuplas ese ob_size es precisamente lo que devuelve len y es una operación O(1) porque el valor ya está almacenado.

La lista en CPython, PyListObject, añade dos campos clave: ob_item y allocated. ob_item es un puntero a un array contiguo de punteros a PyObject. En otras palabras, la lista no contiene los valores directamente sino direcciones a objetos. allocated es el número de ranuras reservadas en ese array. Esa separación entre tamaño lógico ob_size y capacidad allocated es la clave de su eficiencia.

La creación de una lista pasa por una función en C que utiliza varias optimizaciones. CPython mantiene un freelist para reciclar estructuras de lista recientemente liberadas y evitar llamadas costosas al sistema operativo. Además, si la lista es vacía no se reserva el array principal hasta que sea necesario, ahorrando memoria en patrones comunes de uso.

Acceder a un elemento por índice es una operación muy rápida porque consiste en calcular la dirección memoria del puntero correspondiente dentro del array ob_item y devolverlo. Esa aritmética de punteros explica por qué my_list[500] tarda lo mismo con 10 elementos que con 10 millones: es O(1).

¿Y qué hace que la lista sea aparente mente dinámica? El truco está en list_resize. Cuando hay espacio disponible la operación solo actualiza el tamaño lógico y regresa. Si no hay suficiente espacio, la función calcula una nueva capacidad mayor siguiendo una regla de crecimiento proporcional para minimizar la frecuencia de realocaciones, pide memoria al sistema con realloc y copia los punteros al nuevo bloque. Ese copiar es costoso, O(n), pero ocurre con poca frecuencia, por eso el coste amortizado de append es O(1).

El método append primero intenta la via rápida: si allocated es mayor que el tamaño actual coloca el nuevo puntero en la siguiente ranura y ajusta ob_size. Si no hay espacio llama a la ruta lenta que invoca list_resize y provoca la realocación y copia de punteros. Esa doble vía explica por qué la mayoría de los append son muy rápidos.

Insertar en una posición arbitraria, especialmente al inicio, obliga a mover los punteros de los elementos posteriores un lugar hacia la derecha para abrir hueco. En C esto se hace con memmove o con bucles optimizados, pero el coste es lineal en el número de elementos movidos, es decir O(n). Borrar un elemento es el proceso inverso: se cierra la brecha moviendo los elementos siguientes hacia la izquierda y eventualmente se puede reducir la capacidad.

En resumen, una lista de Python es en esencia un array contiguo de punteros a objetos con sobreasignación para acelerar crecimiento. Esa decisión de diseño es una gran optimización para patrones donde se añaden elementos al final con frecuencia, a cambio de operaciones costosas al insertar o borrar en posiciones intermedias o al inicio. Conocer esta mecánica ayuda a elegir estructuras alternativas cuando la aplicación requiere inserciones frecuentes en el medio, como collections deque o estructuras especializadas.

En Q2BSTUDIO somos especialistas en transformar conocimiento técnico en soluciones prácticas. Si desarrollas software para empresas y necesitas aplicaciones a medida nuestro equipo puede ayudarte desde el diseño hasta la puesta en producción con experiencia en software a medida, aplicaciones a medida, inteligencia artificial y ciberseguridad. Descubre nuestros servicios de desarrollo en desarrollo de aplicaciones a medida y cómo aplicamos modelos de IA a problemas reales en proyectos de inteligencia artificial. También ofrecemos servicios cloud aws y azure, servicios inteligencia de negocio, agentes IA, power bi, análisis avanzado y ciberseguridad para proteger tus activos.

Si tu empresa necesita asesoría sobre arquitectura, automatización, agentes IA para optimizar procesos o integración con Power BI, en Q2BSTUDIO combinamos experiencia en desarrollo a medida y seguridad para entregar soluciones escalables y seguras. Contacta con nosotros para explorar cómo podemos adaptar estas ideas y tecnologías a tus retos concretos.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat