{"conversations": [{"from": "user", "value": "Explica'm amb exemples les funcions \"map, \"filter\" i \"reduce\" de python"}, {"from": "assistant", "value": "map, filter i reduce apliquen una funci\u00f3 a cada element d'una llista\n\n- map genera una llista d'igual llargada que la inicial amb els resultats de la funci\u00f3, per exemple si fem servir una funci\u00f3 \"quadrat\" que calculi el quadrat d'un nombre obtindrem una llista amb els quadrats dels elements inicials\n- filter genera una llista que nom\u00e9s cont\u00e9 els elements per als quals la funci\u00f3 ha retornat True, per exemple si fem servir una funci\u00f3 \"parell\" que retorni True quan rep un nombre parell obtindrem una llista que contindr\u00e0 nom\u00e9s els nombres parells de la llista inicial\n- reduce genera un \u00fanic valor a partir dels elements inicials, la funci\u00f3 rep un par\u00e0metre addicional per ajudar en la computaci\u00f3 del resultat final, per exemple si fem servir una funci\u00f3 \"suma\" que sumi dos elements obtindrem el sumatori dels elements de la llista inicial m\u00e9s el valor addicional\n\nPer exemple:\n# Calcula el quadrat d'un nombre\ndef quadrat(element):\n    return element ** 2\n\n# Retorna True si element is parell\ndef parell(element):\n    return element % 2 == 0\n\n# Suma dos nombres\ndef suma(a, b):\n    return a + b\n\nllista = [ 1, 1, 2, 3, 5, 8, 13 ]\n\nprint(map(quadrat, llista)) # -> [1, 1, 4, 9, 25, 64, 169]\nprint(filter(parell, llista))  # -> [2, 8]\nprint(reduce(suma, llista, 0)) # -> 33"}]}