Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - tzinm

#1
¡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:

[x ** 2 for x in range(10) if x % 2 == 0]

Podemos utilizar map y filter para conseguir lo mismo:

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

El resultado obtenido es el mismo en ambos casos:

[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.

[(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:

[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]

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


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?