5.15 itertools -- Funzioni che creano iteratori per cicli efficienti

Nuovo nella versione 2.3.

Questo modulo implementa un certo numero di elementi base per la costruzione degli iteratori ispirati ai costrutti dei linguaggi di programmazione Haskell e SML. Entrambi sono stati riadattati ad una forma adeguata per Python.

Il modulo standardizza un nucleo di strumenti veloci ed efficienti nell'uso della memoria, che sono utili separatamente o in combinazione. La standardizzazione aiuta ad evitare i problemi di leggibilità ed affidabilità che sorgono quando differenti individui creano le loro personali implementazioni, che differiscono lievemente fra loro, ognuna con le proprie variazioni e convenzioni sui nomi.

Gli strumenti sono stati progettati per poter essere utilizzati in combinazione. Questo semplifica la costruzione di strumenti più specializzati in modo sintetico ed efficiente in puro Python.

Per esempio, SML fornisce uno strumento di tabulazione: tabulate(f) che produce una sequenza di f(0), f(1), .... Questo modulo fornisce imap() e count() che possono essere combinati per formare imap(f, count()) e produrre un risultato equivalente.

In maniera simile, gli strumenti funzionali sono stati progettati per cooperare in modo adeguato con le funzioni ad alta velocità fornite dal modulo operator.

L'autore del modulo accetta volentieri suggerimenti per altri semplice elementi base da inserire nelle future versioni del modulo.

Che siano realizzati in puro Python o in codice C, gli strumenti che sfruttano gli iteratori sono più efficienti nell'uso della memoria (e più veloci) rispetto ai corrispondenti basati sulle liste. Adottando il principio della realizzazione in tempo reale, creano dati dove e quando necessario, evitando di tenere occupata la memoria del computer come se fosse un ``magazzino''.

Il vantaggio prestazionale degli iteratori diventa sempre più evidente man mano che aumenta il numero degli elementi - in alcuni casi, le liste divengono talmente grandi da provocare un pesante impatto sulle prestazioni della memoria cache e causarne il rallentamento.

Vedete anche:

The Standard ML Basis Library, The Standard ML Basis Library.

Haskell, A Purely Functional Language, Definition of Haskell and the Standard Libraries.



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.