viernes, 19 de diciembre de 2025

zip(), enumerar() y comprensión de listas. Python para ciencia de datos

Fuente: Coursera & Google

Conceptos clave 

enumerate(): La función enumerate() permite la iteración sobre una secuencia mientras realiza un seguimiento del índice de cada elemento, devolviendo pares de índices y elementos.

zip(): la función zip() combina elementos de múltiples secuencias en tuplas, devolviendo un iterador que produce estas tuplas.

Comprensión de listas: la comprensión de listas proporciona una forma concisa de crear listas aplicando una expresión a cada elemento en un elemento iterable y, opcionalmente, filtrando.

Has aprendido mucho sobre objetos iterables como cadenas, listas y tuplas, y pronto aprenderás más. Estos objetos comprenden muchas de las estructuras de datos principales de Python y, como profesional de los datos, trabajarás con ellos constantemente. Mientras trabajes en Python, a menudo necesitarás realizar las mismas tareas y operaciones muchas veces. Esta lectura te presentará tres herramientas que te ahorrarán tiempo: zip(), enumerate(), y la comprensión de listas.

zip()

La función zip() es una función integrada en Python que hace lo que su nombre indica: Realiza una combinación de elementos de secuencias.

Imagen de una cremallera con dientes entrelazados, cerrada a la izquierda y abierta a la derecha

La función devuelve un iterador que produce tuplas que contienen elementos de cada una de las secuencias de entrada. Un iterador es un objeto que permite procesar una colección de elementos de uno en uno sin necesidad de reunir toda la colección a la vez. Utilice un iterador con bucles u otras funciones iterables como list() o tuple(). He aquí un ejemplo:

>>cities = ['Paris''Lagos''Mumbai']
>>countries = ['France''Nigeria''India']
>>places = zip(cities, countries)

>>print(places)
>>print(list(places))

>>><zip object at 0x7f230bd6c8c8> >>>[('Paris', 'France'), ('Lagos', 'Nigeria'), ('Mumbai', 'India')]

Observe que, en este caso, la función list() se utiliza para generar una lista de tuplas a partir
del objeto iterador. A continuación se indican algunos aspectos que deben tenerse en cuenta
al utilizar la función zip().
  • Funciona con dos o más objetos iterables. El ejemplo dado cierra dos secuencias, pero la función zip() aceptará más secuencias y aplicará la misma lógica.

  • Si los objetos de entrada tienen longitudes desiguales, el iterador resultante tendrá la misma longitud que la entrada más corta.

  • Si sólo le das un objeto iterable como argumento, la función devolverá un iterador que produce tuplas que contienen sólo un elemento de ese iterable a la vez.

Descomprimir

También puede descomprimir un objeto con el operador *. Esta es la sintaxis:

>>scientists = [('Nikola''Tesla'), ('Charles''Darwin'), ('Marie''Curie')]
>>given_names, surnames = zip(*scientists)
>>print(given_names)
>>print(surnames)

>>>('Nikola', 'Charles', 'Marie') >>>('Tesla', 'Darwin', 'Curie')

Observe que esta operación descomprime las tuplas de la lista original elemento a
elemento en dos tuplas, separando así los datos en diferentes variables que pueden
ser manipuladas posteriormente.

enumerate() 

La función enumerar() es otra función incorporada en Python que permite iterar sobre una secuencia sin perder de vista el índice de cada elemento. Similar a zip(), devuelve un iterador que produce pares de índices y elementos. He aquí un ejemplo:

>>letters = ['a''b''c']
>>for index, letter in enumerate(letters):
>>   print(index, letter)

>>>0 a >>>1 b >>>2 c

Tenga en cuenta que el índice inicial por defecto es cero, pero puede asignarle el valor
que desee cuando llame a la función enumerate(). Por ejemplo:

>>letters = ['a''b''c']
>>for index, letter in enumerate(letters, 2):
>>   print(index, letter)

>>>2 a >>>3 b >>>4 c

En este caso, el número dos se pasó como argumento a la función, y el primer elemento
del iterador resultante tenía un índice de dos. La función enumerate() es útil cuando el
lugar que ocupa un elemento en una secuencia debe utilizarse para determinar cómo debe
tratarse el elemento en una operación.

Comprensión de listas

Una de las herramientas más útiles de Python es la comprensión de listas. La comprensión de listas es una forma concisa y eficiente de crear una nueva lista basada en los valores de un objeto iterable existente. Las comprensiones de listas tienen la siguiente forma:

my_list = [expression for element in iterable if condition]

En esta sintaxis:

  • expression se refiere a una operación o a lo que quieres hacer con cada elemento de la secuencia iterable.

  • element es el nombre de la variable que se asigna para representar cada elemento de la secuencia iterable.

  • iterable es la secuencia iterable.

  • condition es cualquier expresión que se evalúe como True o False. Este elemento es opcional y se utiliza para filtrar elementos de la secuencia iterable.

He aquí algunos ejemplos de comprensiones de listas:

Esta comprensión de lista suma 10 a cada número de la lista:

>>numbers = [12345]

>>new_list = [x + 10 for x in numbers]

>>print(new_list)

>>>[11, 12, 13, 14, 15]

En el ejemplo anterior, x + 10 es la expresión, x es el elemento y numbers es la
secuencia iterable. No existe ninguna condición.

La siguiente comprensión de lista extrae la primera y la última letra de cada palabra como una tupla, pero sólo si la palabra tiene más de cinco letras.

>>words = ['Emotan''Amina''Ibeno''Sankwala']

>>new_list = [(word[0], word[-1]) for word in words if len(word) > 5]
>>print(new_list)

>>>[('E', 'n'), ('S', 'a')]

Observe que se pueden realizar varias operaciones en el componente de expresión de la
comprensión de lista para obtener una lista de tuplas. Este ejemplo también utiliza una
condición para filtrar las palabras que no tienen más de cinco letras.

Puntos clave

zip()la comprensión de listas, enumerate(), y la comprensión de listas hacen que el código sea más eficaz, ya que reducen la necesidad de recurrir a bucles para procesar los datos y simplifican el trabajo con iterables. La comprensión de estas herramientas comunes le ahorrará tiempo y hará que su proceso sea mucho más dinámico a la hora de manipular datos.

No hay comentarios.:

Publicar un comentario

Entradas recientes

365 días de Python. Dia 2

  ¡Excelente! Vamos con el Día 2 del reto de clcoding.com . Mientras que el primer día se trata de mostrar mensajes, el segundo día introdu...

Entradas Populares