[Python] l'amore per il pitone
Piergiuliano Bossi
pgbossi a gmail.com
Mar 17 Set 2013 16:08:37 CEST
Esempio 1
I lambda in python sono verbosi e visto che i vari map, reduce, filter, ...
non sono metodi della collezione, si compongono in modo che io percepisco
come innaturale.
Ad esempio, diciamo che abbiamo un array di interi e vogliamo somarne i
cubi.
Ruby:
>> a = [1, 7, 22, 3]
=> [1, 7, 22, 3]
>> a.map{|x| x*x*x }.reduce{|sum, x| sum + x}
=> 11019
Scala:
scala> val a = Array(1, 7, 22, 3)
a: Array[Int] = Array(1, 7, 22, 3)
scala> a.map(x => x*x*x).reduce((sum, x) => sum+x)
res1: Int = 11019
Python:
>>> a = [1, 7, 22, 3]
>>> reduce(lambda sum, x: sum+x, map(lambda x: x*x*x, a))
11019
Rendo l'idea? Python non solo e' il piu' verboso (perche' devi ripetere
"lambda"), ma non ti consente di comporre i metodi naturalmente (in questo
python e' piu' FP-oriented degli altri, ma faccio piu' fatica a leggerlo,
immaginatevi di comporre 4 o 5 manipolazioni o piu', che e' una cosa che si
fa abbastanza naturalmente in Scala o Ruby (o Smalltalk, che poi e' il
precursore di questo stile).
Ciao
Giuliano
PS: vi da' fastidio il top posting per una cosa cosi'?
PPS: so che Python ha la funzione sum(), immaginatevi un'altra operazione
analoga che abbia senso con una reduce... :)
2013/9/17 Marco Beri <marcoberi a gmail.com>
> 2013/9/17 Piergiuliano Bossi <pgbossi a gmail.com>
>
> quando devo manipolare una collezione penso a quanto piu' facile e' in
>> Ruby o Scala
>>
>
> Giuliano,
> magari puoi aggiungere due righe di codice per mostrare le differenze e la
> maggior facilità di gestire una collezione in Ruby o Scala?
>
> Se posso capire i conati per il self non riesco davvero a immaginare un
> modo molto più facile per gestire le collezioni di quello di Python.
>
> Ciao.
> Marco.
> P.S. Ovviamente salto tutta la fase dei saluti ecc. visto che ci
> frequentiamo da anni (in fondo sei tu il protagonista di
> http://beri.it/2009/12/22/la-neve/ che mi ha fatto andare su Radio24
> http://beri.it/2012/03/19/voi-siete-qui/).
>
> --
> http://beri.it/ - Un blog
> http://beri.it/i-miei-libri/ - Qualche libro
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>
--
Piergiuliano Bossi
Blog: http://thinkingbox.wordpress.com/
Twitter: http://twitter.com/thinkingbox (English)
Twitter: http://twitter.com/scatolapensante (Italiano)
Google+: https://plus.google.com/u/0/108187981162465525118
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130917/06d7386d/attachment-0001.html>
Maggiori informazioni sulla lista
Python