[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