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 de lectura • Equip Q2BSTUDIO

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.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat