2013/9/17 Piergiuliano Bossi <pgbo...@gmail.com> > 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). >
Secondo me non hai ancora conosciuto le list-comprehension: >>> a = [1, 7, 22, 3] >>> sum(x**3 for x in a) 11019 Beat that :-) Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python