Metodi iteratori
Ogni oggetto iteratore contiene i seguenti due metodi.
Questo metodo viene utilizzato per inizializzare l'oggetto iterabile. L'oggetto restituito ha il metodo '_ _Prossimo_ _()'In Python 3.
Questo metodo restituisce il valore successivo dell'oggetto iterabile. La relazione tra l'iteratore e l'oggetto iterabile è mostrata nel diagramma seguente.
Iterazione con loop
È stato menzionato in precedenza che il 'per'Loop chiama il'Prossimo()'Metodo implicitamente quando si itera qualsiasi oggetto iterabile. Quando viene utilizzato un ciclo per iterare un oggetto iterabile, il 'per'Loop chiama il'Prossimo()'Metodo implicitamente e il'Mentre'Loop chiama il'Prossimo()' O '__Prossimo__()'Metodo esplicitamente per leggere il valore successivo dell'oggetto iterabile. Entrambi i tipi di loop continuano a chiamare questo metodo fino a "Stopiteration'Il segnale viene generato.
Esempio 1: iterating iterable oggetti con "per" loop
Il seguente script mostra l'uso di 'per'Loop per iterando cinque diversi oggetti iterabili. Il primo 'per'Loop viene utilizzato per iterare il valore della stringa e stampare ogni carattere della stringa in ogni iterazione. Il secondo 'per'Loop viene utilizzato per iterare il contenuto di un file di testo esistente e stampare ogni riga del file in ogni iterazione. Il terzo 'per'Il ciclo è usato per iterare i valori di una tupla. Il quarto 'per'Il ciclo viene utilizzato per iterare i valori contenuti in un elenco. Il quinto 'per'Il ciclo viene utilizzato per iterare i valori contenuti in un dizionario.
# Iterando una stringa usando per loopProduzione
Il seguente output mostra che i caratteri del valore della stringa; le linee del test.TXT file; e gli elementi delle tuple, dell'elenco e del dizionario vengono stampati dopo aver eseguito lo script.
Esempio 2: Iterating elenchi con "While" Loop
Il seguente script mostra l'uso di un 'Mentre'Loop per iterare un elenco di dati. Qui, il 'iter ()"Il metodo viene utilizzato per inizializzare l'oggetto iteerabile e il"Prossimo()'Il metodo viene utilizzato per leggere il valore successivo dell'oggetto iterabile. Stopiteration Il segnale viene utilizzato per terminare dall'infinito 'Mentre' Loop quando nessun elemento dell'elenco è rimasto per la lettura.
# Definisci un elencoProduzione
Il seguente output mostra che ogni valore dell'elenco è stato stampato in ogni riga utilizzando il 'Prossimo()'Metodo dopo aver eseguito lo script.
Esempio 3: iterando una tupla con metodo '__Next __ ()' e loop 'mentre'
Nello script seguente, entrambi 'Prossimo()' E '__Prossimo__()'I metodi sono usati per iterando i valori di una tupla. IL 'iter ()'Il metodo viene utilizzato per creare l'oggetto iteerabile, chiamato'init_iter.'Ecco, il' 'Prossimo()'Il metodo è chiamato due volte per stampare i primi due valori della tupla. Successivamente, un infinitoMentre'Loop viene usato per iterare i valori rimanenti della tupla e il'Stopiteration'Il segnale viene utilizzato per terminare dal ciclo, come nell'esempio precedente.
# Definisci una tuplaProduzione
Il seguente output mostra che dopo aver eseguito lo script, i primi due valori "Uccello' E 'Leone,'sono stampati con il'Prossimo()"Metodo, mentre gli altri tre valori,"Scimmia,"Serpente,' E 'Elefante,'sono stampati con il'__Prossimo__()' metodo.
Iterato con un iteratore personalizzato
Questa sezione mostra come diversi tipi di iteratrini personalizzati possono essere implementati creando classi. Entrambi i '__iter __ ()' e il '__Prossimo__()"I metodi saranno implementati in una classe e il"Mentre'Il ciclo verrà utilizzato per iterare i valori dell'oggetto iterabile. La prossima parte di questo articolo mostrerà anche come creare un iteratore personalizzato infinito e controllare l'iterazione.
Esempio 4: utilizzo di un semplice iteratore personalizzato
Il seguente script consente di calcolare il valore di XN Utilizzando un iteratore personalizzato senza utilizzare alcuna funzione integrata di Python. La classe nominata 'x_to_the_power_n'è dichiarato nella sceneggiatura. IL '__dentro__()'Il metodo della classe inizializzerà i valori di X E N che verrà utilizzato al momento della creazione di oggetti. IL '__iter __ ()"Il metodo inizializzerà la variabile di classe, che memorizzerà il"risultato'variabile del calcolo in ogni iterazione. I valori di X E N sarà preso come input dall'utente. Un oggetto della classe 'numeri'è creato con X E N. Successivamente, un oggetto iterabile chiamato 'iter_obj'è creato per chiamare il' '__Prossimo__()'Metodo per N-1 volte usando il 'Mentre'Loop per calcolare il valore di XN. In ogni iterazione, il valore di X verrà moltiplicato per il valore precedente del 'risultato'variabile. Dopo aver terminato il 'Mentre'Loop, il'__Prossimo__()'Il metodo verrà chiamato di nuovo per stampare il valore di XN.
"Crea una classe per calcolare ilProduzione
Il seguente output lo mostra 2 è preso come valore di X E 4 è preso come valore di N. Quindi, lo script ha calcolato il valore di 24 essere 16.
Esempio 5: utilizzo di un iteratore personalizzato infinito
Il seguente script stamperà continuamente i numeri divisibili di 5 con un ritardo di un secondo fino a quando l'utente preme Ctrl + c per generare il 'Tastiera'Segnale. L'infinito 'Mentre'Loop viene utilizzato qui per creare un iteratore personalizzato infinito. IL 'tempo"Il modulo viene importato all'inizio dello script per utilizzare il"sonno()'Metodo per ritardare ogni output per un secondo. Il numero 5 è inizializzato in ''Num"Variabile come primo numero divisibile nello script e il numero successivo viene generato aggiungendo 5 con il valore precedente di"Num'variabile.
# Modulo di importazioneProduzione
La seguente uscita mostra che il numero ha iniziato a stampare da 5 e stampato continuamente i numeri successivi uno dopo l'altro con una durata di un secondo. Quando l'utente ha premuto Ctrl + c Dopo aver stampato il numero 60, il messaggio 'Ctrl+C è premuto.'è stato stampato, prima di terminare lo script.
Esempio 6: controllo di un iteratore infinito personalizzato
Il seguente script mostra come fermare l'iteratore Infinite personalizzato dopo aver completato un numero specifico di iterazioni. IL '__iter __ ()"Il metodo della classe inizializzerà i valori del"N' E 'risultato'Variabili di classe. Lo script calcolerà i quadrati dei numeri, a partire da 1, che sono archiviati nella variabile N, e stampare il valore quadrato di N fino al valore di N è più grande di 5. Un ciclo infinito è stato dichiarato qui per chiamare il '__Prossimo__()'Metodo per stampare il valore quadrato di N. Quando il valore di N Raggiungi 6, IL 'Stopiteration'Il segnale genererà per terminare il ciclo.
# Modulo di importazioneProduzione
Il seguente output mostra che l'iteratore personalizzato Infinite è stato terminato quando il valore di N è diventato maggiore di 5. Lo script ha calcolato e stampato i valori quadrati dei valori numerici da 1 a 5.
Iterato con iTertools
Python ha un modulo integrato chiamato 'ITTEROOLS'che può essere utilizzato per creare un iteratore per iterating dati utilizzando un loop. La prossima sezione di questo articolo mostra come utilizzare tre funzioni in questo modulo.
ITTEROOLS.contare()
IL 'ITTERTOOLS.cont'La funzione può essere utilizzata con il'carta geografica()'Metodo per generare dati sequenziali e con il'cerniera lampo()'Metodo per aggiungere sequenze utilizzando il parametro di conteggio di questo metodo. La sintassi di questa funzione è riportata di seguito.
Sintassi
ITTEROOLS.Conte (start = 0, Step = 1)Qui, il primo parametro, "inizio,'viene utilizzato per definire il valore iniziale della sequenza e 0 è il valore predefinito di questo parametro. Il secondo parametro, "fare un passo,'viene utilizzato per impostare la differenza tra i numeri consecutivi e 1 è il valore predefinito di questo parametro.
Esempio 7: Uso della funzione Count () di iTertools
Il seguente script calcolerà la somma da 0 A N numeri, dove il valore di N sarà preso dall'utente. IL 'contare()'La funzione viene importata da'ITTEROOLS'All'inizio della sceneggiatura. IL 'my_iterator'L'oggetto viene inizializzato con il'contare()'funzione, con a'inizio'Valore di 0 e a'fare un passo'Valore di 1. Successivamente, il 'sum_result'La variabile è inizializzata dal primo valore dell'oggetto iterabile. Il valore iniziale viene inizializzato nella variabile io e il numero iniziale viene memorizzato come carattere nella variabile, numeri che verranno utilizzati per combinare altri numeri in ogni iterazione. I valori dei numeri sequenziali verranno aggiunti in ogni iterazione quando il 'Prossimo()'Il metodo è chiamato. Quando il valore di io diventa maggiore di N, Lo script terminerà visualizzando il risultato della somma.
"Il seguente script calcoleràProduzione
Il seguente output mostra che il numero 10 viene preso come input utilizzato per terminare il loop dopo l'esecuzione dello script. In questo output, lo script ha calcolato la somma da 0 a 10 e stampato l'uscita, 0+1+2+3+4+5+6+7+8+9+10 = 55.
ITTEROOLS.ciclo()
Questa funzione contiene solo un argomento, che può essere qualsiasi oggetto. Lo scopo di questa funzione è ripetere i valori dell'oggetto dopo aver completato l'iterazione di tutti i valori. Qui, stringhe, tuple, liste, ecc. può essere usato come oggetto. I ritorni di oggetto iterabile di questa funzione vengono utilizzati per iterare ogni valore dell'oggetto che verrà usato come argomento usando il 'Prossimo()' metodo. Il numero di volte in cui i valori dell'oggetto iterabile iteriranno si baserà sul numero di iterazioni del loop. La sintassi di questa funzione è riportata di seguito.
Sintassi
ITTEROOLS.ciclo (oggetto)Esempio 8: Utilizzo della funzione Cycle () di iTertools
IL 'casuale' E 'ITTEROOLS"I moduli vengono importati all'inizio dello script per generare un numero casuale e utilizzare il"ciclo()'funzione dal' 'ITTEROOLS'Modulo per ripetere i dati. Un elenco di tre numeri casuali viene usato come argomento del 'ciclo()' funzione. L'oggetto iterabile chiamato 'NUM_LIST'è inizializzato dal valore di ritorno di questa funzione. IL 'contare'La variabile è inizializzata a 0, e quando il valore di questa variabile diventa 6, IL 'Mentre'Loop terminerà. Così il 'Mentre'Loop iterirà sei volte e ogni valore dell'elenco si ripeterà solo una volta.
# Importa il modulo casualeProduzione
Il seguente output mostra che tre numeri casuali, 3, 17, E 185, sono stati generati come elementi elenchi. Il ciclo è iterato sei volte e questi tre valori vengono ripetuti per le iterazioni successive.
ITTEROOLS.ripetere()
La funzione "ripetizione ()" funziona come un iteratore infinito e può prendere due argomenti. Quando il secondo argomento viene omesso, la funzione "ripetizione ()" funziona come un iteratore infinito e ripete il valore un numero infinito di volte. Questa funzione non occupa la memoria per ogni ripetizione. Crea solo la variabile una volta nella memoria e ripete la stessa variabile un numero infinito di volte in cui è impostato un solo argomento per questa funzione. La sintassi di questa funzione è riportata di seguito.
Sintassi
ITTEROOLS.Ripeti (valore, limite)Il primo argomento viene utilizzato per prendere il valore che si ripeterà. Il secondo argomento è facoltativo e viene utilizzato per impostare il limite delle ripetizioni.
Esempio 9: Utilizzo della funzione ripetizione () del modulo ITERTURS
IL 'ITTEROOLS"Il modulo viene importato all'inizio dello script per utilizzare il"ripetere()' funzione. Un valore di stringa verrà prelevato dall'utente per ripetere e un valore numerico verrà preso dall'utente per impostare il limite di ripetizione. Il valore di ritorno del 'ripetere()"La funzione verrà quindi convertita in un elenco con il"elenco()'Metodo e memorizzato nel' 'ListData'variabile. I valori del 'ListData'sarà stampato con il'per' ciclo continuo.
# Importa il modulo ITTOOLSProduzione
Il seguente output lo mostra "Pitone'è preso come valore stringa e 3 viene preso come numero utilizzato per ripetere il valore della stringa dopo l'esecuzione dello script. L'output mostra che la stringa 'Pitone'Si ripete tre volte.
Conclusione
Il concetto di iteratore e gli usi di diversi tipi di iteratori in Python sono tentati a spiegare con gli esempi molto semplici in questo articolo. Gli utenti di Python possono utilizzare un iteratore integrato o possono creare il loro iteratore personalizzato in base al requisito. Questo articolo aiuterà gli utenti di Python a conoscere i metodi utilizzati nell'iteratore e come questi metodi funzionano con qualsiasi ciclo per leggere qualsiasi oggetto iterabile. Alcuni usi di ITTEROOLS Il modulo di Python è anche spiegato in questo articolo per conoscere maggiori dettagli sull'iteratore in Python.