---
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']