--- title: ASIX M3. [UF2]. Map, reduce i filter. tags: asix, programació, funcions, programació modular --- # ASIX1 M03: Programació bàsica [vincle a font en MarkDown](https://hackmd.io/@JdaXaviQ/H1zGckL-q) --- # Map, filter i reduce. ## Map **Map:** aplica una funció a tots els ítems d'una col·lecció de forma individual, retornant un __iterador__ amb el resultat. Per exemple, podem aplicar la funció map per a obtenir la longitud d'una col·lecció de paraules: ```python paraules = ["gat", "hipopòtam", "flor", "quàdriceps"] longituds = list(map(len, paraules)) for index in range(len(paraules)): print(f"{index:<5}{paraules[index]:20}{longituds[index]:>3}") ``` 0 gat 3 1 hipopòtam 9 2 flor 4 3 quàdriceps 10 ## Reduce **Reduce:** Combina una col·lecció d'ítems en un de sol. Necessitem importar les '*functools*'. Per exemple, podem utilitzar reduce per a sumar una col·lecció de nombres: ```python import functools nombres = [1,4,5,6,7] suma = functools.reduce(lambda a, x: a+x,nombres) print(f"{suma=}") ``` suma=23 ## Filter **Filter:** Retorna els ítems d'una col·lecció que produeixen un True quan els passem per la funció. Per exemple si volem tria els noms que comencen per la lletra 'A': ```python noms = ['Anna', 'Francesc', 'Gerard', 'Antoni', 'Greta', 'Alicia', 'Alex'] comencen_per_A = [nom for nom in filter(lambda n: n[0]=='A', noms)] print(comencen_per_A) ``` ['Anna', 'Antoni', 'Alicia', 'Alex']