[Python] Dividere stringa in parti uguali

Daniele Varrazzo piro a develer.com
Ven 23 Maggio 2008 00:55:54 CEST


Mr.SpOOn ha scritto:

> Ma qual  il vantaggio di usare xrange piuttosto che range?

range  una funzione che costruisce una lista. Se tutto ci di cui hai bisogno 
 contare da 0 a n, non  necessario avere la lista completamente in memoria. 
Se hai bisogno di contare da 0 a un milione, range() costruisce una lista con 
un milione di elementi, con relativo tempo impiegato per la costruzione e 
occupazione di memoria.

xrange() restituisce un generatore, un piccolo oggetto che non necessita di 
tenere tutta la lista in memoria. Presenta l'interfaccia adatta per essere 
iterato, fornendo su richiesta i numeri: in questo modo pu essere messo in un 
"for". In memoria per mantiene solo il proprio stato, ovvero a che numero  
arrivato. Questo ovviamente  molto pi efficiente della creazione della lista 
completa.

I generatori sono una feature molto potente del linguaggio. Tante funzioni 
chiave che sono nate agli albori del linguaggio restituendo liste (range(), i 
metodi di dict keys(), values(), items(), i funzionali map() e filter()...) 
hanno "sviluppato" una controparte in forma di iteratore (xrange, iteritems 
ecc). Visto che inoltre  facile convertire un iteratore in una lista (basta 
usare il costruttore list(): range(10) pu essere ottenuto con 
list(xrange(10))) e che poter fare le cose in due modi diversi  contro la 
filosofia Python, i metodi che creano liste in futuro verranno soppiantati da 
quelli generatori (ma visto che  una modifica non backward-compatible, lo si 
far solo in Python 3.0)

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python