[Python] l'amore per il pitone
Manlio Perillo
manlio.perillo a gmail.com
Mar 17 Set 2013 20:21:11 CEST
-----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-----
Maggiori informazioni sulla lista
Python