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?