elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Temas
Páginas: [1]
1  Programación / Programación General / Python - Comprensión de listas vs map/filter (duda) en: 29 Julio 2021, 21:11 pm
¡Hola!

Parece que me voy a estrenar con mi primer mensaje, aunque no me gusta la idea de que sea para realizar una consulta...

Voy a ello. Estoy con el libro "Learning Python" en el tema Iterations and Comprehensions, Part 2. Para entender mejor la comprensión de listas hace varias comparaciones con utilidades como map y filter.

Veamos un ejemplo de los que nos encontramos en el libro:

Queremos crear una lista que se el cuadrado de los números pares entre el 0 y el 9 (ambos incluidos). Partiendo de la siguiente comprensión de lista:

Código:
[x ** 2 for x in range(10) if x % 2 == 0]

Podemos utilizar map y filter para conseguir lo mismo:

Código:
list(map((lambda x: x ** 2), filter((lambda x: x % 2 == 0), range(10))))

El resultado obtenido es el mismo en ambos casos:

Código:
[0, 4, 16, 36, 65]

Si pasamos a una comprensión de lista más "compleja" para encontrar su equivalente con las utilidades map y filter.

Código:
[(x, y) for x in range(5) if x % 2 == 0 for y in range(5) if y % 2 == 1]

Obteniendo como resultado una lista de tuplas:

Código:
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]

Obtenemos este mismo resultado si utilizamos el clásico loop for.

Código:
resultado = []
for x in range(5):
     if x % 2 == 0:
         for y in range(5):
             if y % 2 == 1:
                 resultado.append((x,y))

¿Se os ocurre cuál sería el equivalente de esta comprensión de lista con las utilidades map y filter?
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines