-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 17/09/2013 20:09, Piergiuliano Bossi wrote: > [...] ##BEGIN## def flatmap(seq, fun): for x in seq: for y in > fun(x): yield y > > > def foo(x): return [x - 1, x, x + 1] > > > print list(flatmap([1, 2, 3, 4, 5], foo)) ##END## > > La list alla fine serve a stampare correttamente la sequenza > "lazy" > > > Bello, mi piace molto, ma soffre lo stesso problema dell'uso di > chain: lancia un'eccezione se la lista di partenza e' gia' > "piatta". > >>>> print list(flatmap([1, 2, 3, 4, 5], lambda x: x + 1)) > Traceback (most recent call last): File "<stdin>", line 1, in > <module> File "<stdin>", line 3, in flatmap TypeError: 'int' object > is not iterable >
Si, perch│ per "contratto" la funzione chiamata deve restituire una sequenza. Comunque non sono sicuro di capire cosa intendi con "lista di partenza": │ quella che passi come primo argomento a flatmap? In questo caso, non │ il motivo per cui la funzione fallisce. La versione in Scala funziona in entrambi questi casi: flatmap([1, 2, 3, 4, 5], lambda x: x + 1)) flatmap([1, 2, 3, 4, 5], lambda x: [x + 1)) ? E' facile modificare la funzione in modo da funzionare in ogni caso, ma non mi sembra una buona idea. > [...] Ciao Manlio -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) Comment: Using GnuPG with Icedove - http://www.enigmail.net/ iEYEARECAAYFAlI4nZYACgkQscQJ24LbaUSfNQCdGKaefCCwdjFItlfaeSN9teWM o/oAoIj/1sQTB883kL7xLMhygVazxqx8 =6W1o -----END PGP SIGNATURE----- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python