> > > >>>> 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? >
Si', [1, 2, 3, 4, 5] > 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)) > > ? > > Ho toppato e alla grande: il comportamento di Scala e' identico a Python (con un messaggio d'errore che e' tutto un programma, te lo risparmio). E' Ruby quello con cui puoi fare flatmap su una collezione gia' piatta e non si imbufalisce. Ovvero: irb(main):001:0> a = [1, 2, 3, 4, 5] => [1, 2, 3, 4, 5] irb(main):002:0> a.flat_map{|x| x + 1} => [2, 3, 4, 5, 6] irb(main):003:0> a.flat_map{|x| [x + 1]} => [2, 3, 4, 5, 6] irb(main):004:0> Questo proprio perche' la flatmap di Ruby e' analoga a fare una map, seguita da una flatten. > E' facile modificare la funzione in modo da funzionare in ogni caso, > ma non mi sembra una buona idea. > Ok. Ciao, Giuliano -- Piergiuliano Bossi Blog: http://thinkingbox.wordpress.com/ Twitter: http://twitter.com/thinkingbox (English) Twitter: http://twitter.com/scatolapensante (Italiano) Google+: https://plus.google.com/u/0/108187981162465525118
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python