Sto leggendo la documentazione di Python per approfondire veramente il linguaggio Python e ho trovato le funzioni filtro e mappa. Ho usato il filtro prima, ma non ho mai mappato, anche se ho visto entrambi in varie domande su Python qui su SO.Python: Differenza tra filtro (funzione, sequenza) e mappa (funzione, sequenza)
Dopo aver letto su di loro nel tutorial Python, sono confuso sulla differenza tra i due. Ad esempio, dal 5.1.3. Functional Programming Tools:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
e
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
Questi sembrava quasi esattamente la stessa funzione a me, così sono andato in terminale per eseguire Python in modo interattivo e testati fuori mio caso. Ho utilizzato map
sia per la prima che per la seconda istanza sopra e per la prima (return x % 2 != 0 and x % 3 != 0
) ha restituito un elenco di valori booleani anziché numeri.
Perché il valore map
restituisce talvolta un valore booleano e altre volte il valore di ritorno effettivo?
Qualcuno può spiegarmi esattamente la differenza tra map
e filter
?
che ha senso ora, vedo come il termine del filtro suggerisce ciò che la funzione fa contro mappa. – samrap
In realtà anche il nome 'map()' ha senso, in alcuni campi quando la mappa viene usata come verbo significa trovare la relazione corrispondente da 1 a 1. Come in matematica: "mappa xey" o in genetica: "mappa il diabete in un gene". Una cosa bella di 'Python' è proprio così: i nomi spesso hanno un senso. –
questo è un buon punto. È strano come alcuni aspetti della programmazione siano simili agli esempi di tutti i giorni.Come se fossi in algebra 2 e stiamo imparando le funzioni f (x) e metà della classe è stumped ma l'idea è simile al 100% alle funzioni di programmazione. – samrap