[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