Iterables en Python: Mesa del Buffet

Qué es un iterable en Python, diferencias con el iterador, __iter__ y __getitem__, y casos prácticos: generación perezosa, procesamiento de grandes volúmenes y diseño de iterables.

18 sept 2025 • 4 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

En Python, cuando escribes for x in algo: hay mucho ocurriendo detrás de escena. Ese algo puede ser una lista, una cadena, un diccionario o incluso un flujo de archivo. Lo que permite que un objeto sea iterable es que implemente la interfaz de iteración: los iterables.

Metáfora de la mesa del buffet: imagina entrar en un restaurante tipo buffet. Buffet = iterable, el contenedor donde están los platos. Plato = iterador, tu ayudante personal que recuerda qué has cogido. Idea clave: la mesa del buffet nunca se agota, puedes coger otro plato y empezar de nuevo. Cada plato tiene su propia posición, así dos personas pueden servirse independientemente del mismo buffet.

Qué es un iterable en Python: formalmente un objeto es iterable si implementa __iter__ que devuelve un iterador, o si no, implementa __getitem__ con indexación basada en cero para que Python pueda simular la iteración llamando a obj[0], obj[1], ... hasta IndexError. La llamada iter(obj) actúa como el timbre universal: si obj.__iter__ existe, Python lo usa; si no, intenta el fallback de __getitem__.

Ejemplos en código conceptual: lst = [1,2,3] s = hola st = {x,y,z} d = {a:1,b:2} Bajo el capó: it = iter(lst) next(it) devuelve 1, luego 2, luego 3. Nota: los sets son iterables pero no indexables, así que st[0] causaría TypeError.

Memoria y objetos: una lista es un array contiguo de punteros a objetos. Un iterador como list_iterator es muy ligero: almacena una referencia a la lista original y un cursor entero pequeño con la posición siguiente. Los iteradores no copian los datos, solo mantienen una referencia y una posición, lo que implica una sobrecarga de memoria O(1). Por ejemplo range(10000000) es perezoso y no asigna diez millones de números. Iteradores y generadores permiten procesar datos uno por uno con coste de memoria casi nulo.

Iterables mediante __getitem__ como fallback: por ejemplo una clase SquareSeq con __getitem__ que devuelve index*index y lanza IndexError cuando index es negativo. Python seguirá llamando a sq[0], sq[1], ... hasta encontrarse con IndexError. Precaución: si nunca se lanza IndexError la iteración puede ser infinita.

Casos de uso reales: procesar archivos de logs o CSV gigantes iterando línea a línea sin cargar todo en memoria; llamadas a APIs paginadas donde cada next obtiene una página nueva; pipelines que combinan map, filter e itertools para flujos de datos eficientes; cálculos perezosos que sólo se realizan cuando se necesitan; rangos numéricos grandes con range y slicing para iteración eficiente.

Trampas y advertencias: los iteradores se agotan, una vez consumidos no se rellenan. Sets y diccionarios no garantizan orden estable salvo la garantía de orden por inserción en CPython que no debe usarse como dependencia fuerte. Iterables infinitos como itertools.count requieren condiciones de parada o slice para no bloquear el programa.

Cómo diseñar un iterable personalizado correctamente: evitar el patrón donde el propio contenedor actúa como iterador si quieres permitir múltiples pasadas. En lugar de eso, separar el contenedor y el iterador creando una clase Cities que en __iter__ devuelve una instancia de CityIterator que mantiene su propio cursor. Así puedes iterar sobre Cities() varias veces sin quedarte sin elementos en la segunda pasada.

Modelo mental ASCII simplificado: [Iterable mesa del buffet] __iter__ o __getitem__ -> [Iterator plato] referencia + cursor __next__ devuelve items uno a uno StopIteration detiene la iteración.

Checklist rápido: si necesitas múltiples pasadas usa iterable, no iterator; si buscas eficiencia de memoria usa generadores o APIs basadas en iteradores; para comprobar si algo es iterable prueba iter(obj) y captura TypeError; si necesitas una condición especial de parada considera iter(callable,sentinel).

Sobre Q2BSTUDIO: somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones de software a medida, inteligencia artificial, ciberseguridad y servicios cloud. Diseñamos arquitecturas seguras y escalables para clientes que necesitan desde aplicaciones corporativas hasta agentes IA y soluciones de inteligencia de negocio. Si buscas partners para crear productos digitales robustos podemos ayudarte con el desarrollo de aplicaciones a medida y con estrategias de inteligencia artificial para empresas que incluyen agentes IA, modelos personalizados y consultoría de IA.

Palabras clave integradas para mejorar posicionamiento: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. Además ofrecemos servicios de ciberseguridad y pentesting, migraciones y gestión en servicios cloud aws y azure, y soluciones de Business Intelligence y Power BI para explotar tus datos.

Resumen: en la Parte 1 aprendimos qué es un iterable y por qué la metáfora del buffet ayuda a entender la diferencia entre iterable y iterador, cómo funciona iter con __iter__ y el fallback __getitem__, por qué los iteradores son ligeros y casos prácticos donde usarlos. En la siguiente entrega profundizaremos en los iteradores, el método __next__, StopIteration y cómo encajan los generadores en este ecosistema.

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