[Python] l'amore per il pitone
Piergiuliano Bossi
pgbossi a gmail.com
Mer 18 Set 2013 18:45:30 CEST
2013/9/18 enrico franchi <enrico.franchi a gmail.com>
>
>
>
> 2013/9/18 Manlio Perillo <manlio.perillo a gmail.com>
>
>> Peccato che flatten non sia disponibile in itertools, e non credo sia
>> implementabile in modo elegante.
>>
>>
> Dipende cosa intendi con "elegante". A me questa non dispiace:
>
>
Niente male, concordo.
> import collections as c
>
> def flatten(obj):
> """
> >>> list(flatten(1))
> [1]
> >>> list(flatten([1, 2, 3]))
> [1, 2, 3]
> >>> list(flatten([1, [2, 3], [4, 5], 6]))
> [1, 2, 3, 4, 5, 6]
> """
> stack = [obj]
> while stack:
> current = stack.pop()
> if isinstance(current, c.Sequence):
> stack.extend(reversed(current))
> else:
> yield current
>
>
> if __name__ == '__main__':
> import doctest
> doctest.testmod()
>
> Facilmente adattabile per una flatmap alla ruby. Non e testata molto (come
> si puo' vedere), ma sembra ragionevole.
>
> Si, avrei potuto usare ricorsione esplicita invece dello stack, ma poi si
> sarebbe complicata la gestione del generatore, temo.
> Poi possiamo girarci intorno: Python supporta alcuni costrutti funzionali
> ma quello che e' e rimane e' un linguaggio *imperativo* ad oggetti.
> In pratica le parti veramente funzionali di python girano intorno ad
> itertools e functools e a poche features del core (LC).
>
> Insomma, Python e' un linguaggio che *sceglie* di avere degli statement e
> non di essere tutto un'espressione. Vorra' pur dire qualcosa.
>
>
Non so se c'e' un messaggio nella bottiglia, comunque a me personalmente
interessano i modelli misti FP+OO (in nessun ordine particolare), non
quelli puri.
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
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130918/4432e340/attachment.html>
Maggiori informazioni sulla lista
Python