2011-12-12 15 views
5

Sto cercando di migliorare la mia documentazione. Voglio dire che questa funzione accetta qualcosa che è una collection.Iterable, ma il codice itererà più volte sull'intero iterabile. Una "lista" è troppo specifica e un "iterabile" non funziona perché alcuni iterabili possono essere ripetuti una sola volta.Nome pitone di iterabile che può essere ripetuto più volte

Esiste un nome per una cosa? "Re-iterabile"? Multiple-iterabile?

+0

Bella domanda .. –

+2

Non rispondere alla tua domanda, ma ti suggerisco di utilizzare itertools.tee nel codice, in modo che possa accettare qualsiasi iterabile. – jsbueno

+0

@jsbueno: questo introdurrebbe una copia ridondante quando si passa in una sequenza, però. –

risposta

2

Non riesco a pensare a qualcosa di appropriato. Reiterabile suona come un bel termine, perché non definirlo chiaramente nella tua documentazione e poi usarlo?

5

Probabilmente si desidera il termine "sequence". Una sequenza in Python è qualcosa che ha una lunghezza e supporta l'accesso agli oggetti per indice.

+1

Anche questo potrebbe essere troppo specifico, ad esempio un elenco collegato non supporta l'accesso per indice, ma è ancora reiterabile. –

+1

@SideshowBob: Non penso che questo sia troppo restrittivo nella pratica. L'unica implementazione di liste collegate che viene fornito con Python è l'elenco collegato chunked 'deque', che è anche una sequenza. Naturalmente l'accesso per indice è O (n) per un 'deque'. –

+2

@SvenMarnach: A ValuesView è "reiterabile", ma non supporta l'accesso per indice in generale. –

Problemi correlati