-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 17/09/2013 18:46, Piergiuliano Bossi wrote: > [...] On 17/09/2013 18:34, Piergiuliano Bossi wrote: >> [...] Ad esempio, data una lista di interi, per estrarre quelli >> piu' grandi di 5: >> >>>>> a = [2, -4, 27, 44, 13, 0] filter(lambda x: x > 5, a) >> [27, 44, 13] >>>>> [x for x in a if x > 5] >> [27, 44, 13] >>>>> >> >> Immagino che tu vada diretto con la seconda, mentre a me viene >> naturale la prima (la trovo piu' "intention revealing", dice >> chiaramente che sto filtrando la lista). >> >> Torna? >> > > No, perch│ la versione Python │ altrettanto compatta, e chi ha > esperienza con Python non ha problemi a capire le intenzioni del > codice. > > > Intendevo "torna" l'uso della comprehension con un if embedded. >
Ah, ok; si torna. > Detto cio', non mi puoi dire seriamente che la versione con la > comprehension e' altrettanto comunicativa: il problema non e' > capirla in toto, il problema e' che devi leggerti tutta la > comprehension per sapere se otterrai una collezione con la stessa > numerosita', se stai trasformando gli elementi o cosa. Se inveci > usi filter, map, ecc. lo sai al volo, non devi leggere il dettaglio > della trasformazione. Questo e' il nocciolo di come manipolare le > collezioni che deriva dal mondo Smalltalk. > > Comunque, ribadisco, non voglio mica convincervi, neh... :) > Non c'è bisogno. Ti ho consigliato Haskell, no? Io l'ho studiato per un pò di tempo ed è uno dei miei linguaggi preferiti; ma uso Python perchè sono più produttivo. Tra l'altro se vuoi la versione più verbosa/leggibile, puoi sempre usare filter e reduce. Però tieni conto che le chiamate a funzione, in Python, non sono molto efficienti (ed infatti è una cosa che spesso mi da fastidio, dato che mi ritrovo spesso a comporre piccole funzioni). Inoltre tieni conto che in Python 3.x, reduce non è più una funzione builtin, ma è stata spostata nel modulo functools (invece filter è ancora una builtin). Ciao Manlio -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) Comment: Using GnuPG with Icedove - http://www.enigmail.net/ iEYEARECAAYFAlI4lLEACgkQscQJ24LbaURuHACghV393MAqkxc+VQeK/j9WVaiU XuMAnikUy4sl4/Jx7jSdt83HfvqZ95aL =nFVc -----END PGP SIGNATURE----- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python