Qual è il modo corretto di eseguire più iterazioni su un contenitore? Dalla documentazione python:Modo corretto per iterare due volte su un elenco?
Iterator - Un oggetto contenitore (ad esempio un elenco) produce un nuovo e fresco iteratore ogni volta che si passa alla funzione iter() o utilizza in un ciclo for. Se si tenta di eseguire questo con un iteratore, verrà restituito lo stesso oggetto iteratore esaurito utilizzato nel precedente passaggio di iterazione, rendendo visualizzato come un contenitore vuoto.
L'intenzione del protocollo è che una volta che il metodo next() di un iteratore solleva StopIteration, continuerà a farlo nelle chiamate successive. Le implementazioni che non obbediscono a questa proprietà sono considerate non funzionanti. (Questo vincolo è stato aggiunto in Python 2.3; in Python 2.2, vari iteratori sono suddivisi in base a questa regola.)
Se ho questo codice:
slist = [1,2,3,4]
rlist = reversed(slist)
list(rlist)
#[4,3,2,1]
tuple(rlist)
#()
Quale sarebbe la più semplice e il modo più corretto di ripetere su 'rlist' due volte?
Nota che non sei l'iterazione su una lista due volte - È facile. Stai effettivamente iterando su un '' due volte. –
mgilson