Metodo Python zip() prende contenitori iterabili e restituisce un singolo oggetto iteratore, con valori mappati da tutti i contenitori.
Sintassi Python zip()
È abituato mappare l'indice simile di più contenitori in modo che possano essere utilizzati solo utilizzando una singola entità.
Sintassi: zip(*iteratori)
Parametri: Iterabili o contenitori Python (elenco, stringa ecc.)
Valore di ritorno : Restituisce un singolo oggetto iteratore.
zip() negli esempi Python
Python zip() con elenchi
In Pitone , la funzione zip() viene utilizzata per combinarne due o più elenchi (o qualsiasi altro iterabile) in un singolo iterabile, dove gli elementi delle posizioni corrispondenti sono accoppiati insieme. L'iterabile risultante contiene tuple , dove il primo elemento di ogni elenco è accoppiato, il secondo elemento di ogni elenco è accoppiato e così via.
Python3
name> => [> 'Manjeet'> ,> 'Nikhil'> ,> 'Shambhavi'> ,> 'Astha'> ]> roll_no> => [> 4> ,> 1> ,> 3> ,> 2> ]> # using zip() to map values> mapped> => zip> (name, roll_no)> print> (> set> (mapped))> |
>
>Produzione
{('Nikhil', 1), ('Shambhavi', 3), ('Manjeet', 4), ('Astha', 2)}>
Python zip() con enumerate
La combinazione di zip() e enumerare() è utile negli scenari in cui si desidera elaborare più elenchi o tuple in parallelo e inoltre è necessario accedere ai relativi indici per scopi specifici.
Python3
rimuove l'ultimo carattere dalla stringa
names> => [> 'Mukesh'> ,> 'Roni'> ,> 'Chari'> ]> ages> => [> 24> ,> 50> ,> 18> ]> for> i, (name, age)> in> enumerate> (> zip> (names, ages)):> > print> (i, name, age)> |
>
>Produzione
0 Mukesh 24 1 Roni 50 2 Chari 18>
Python zip() con dizionario
La funzione zip() in Python viene utilizzata per combinare due o più file iterabili dizionari in un singolo iterabile, dove gli elementi corrispondenti dell'iterabile di input sono accoppiati insieme come tuple. Quando si utilizza zip() con i dizionari, accoppia le chiavi e i valori dei dizionari in base alla loro posizione nel dizionario.
Python3
stocks> => [> 'GEEKS'> ,> 'For'> ,> 'geeks'> ]> prices> => [> 2175> ,> 1127> ,> 2750> ]> new_dict> => {stocks: prices> for> stocks,> > prices> in> zip> (stocks, prices)}> print> (new_dict)> |
>
converti il numero intero in una stringa java
>Produzione
{'GEEKS': 2175, 'For': 1127, 'geeks': 2750}>
Python zip() con Tuple
Se utilizzato con tuple, cerniera lampo() funziona accoppiando gli elementi delle tuple in base alle loro posizioni. L'iterabile risultante contiene tuple in cui la i-esima tupla contiene l'i-esimo elemento di ciascuna tupla di input.
Python3
tuple1> => (> 1> ,> 2> ,> 3> )> tuple2> => (> 'a'> ,> 'b'> ,> 'c'> )> zipped> => zip> (tuple1, tuple2)> result> => list> (zipped)> print> (result)> |
>
>
Produzione:
[(1, 'a'), (2, 'b'), (3, 'c')]>
Python zip() con più iterabili
La funzione zip() di Python può essere utilizzata anche per combinare più di due iterabili. Può prendere più iterabili come input e restituire un iterabile di tuple, dove ciascuna tupla contiene elementi dalle posizioni corrispondenti degli iterabili di input.
Python3
list1> => [> 1> ,> 2> ,> 3> ]> list2> => [> 'a'> ,> 'b'> ,> 'c'> ]> list3> => [> 'x'> ,> 'y'> ,> 'z'> ]> zipped> => zip> (list1, list2, list3)> result> => list> (zipped)> print> (result)> |
>
>Produzione
[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]>
Comprimere elenchi di dimensioni diverse
La funzione zip() eseguirà l'iterazione solo sull'elenco più piccolo passato. Se vengono forniti elenchi di lunghezze diverse, la combinazione risultante sarà lunga solo quanto è passata l'elenco più piccolo. Nel seguente esempio di codice:
oggetto da Java a JSON
Python3
# Define lists for 'persons', 'genders', and a tuple for 'ages'> persons> => [> 'Chandler'> ,> 'Monica'> ,> 'Ross'> ,> 'Rachel'> ,> 'Joey'> ,> 'Phoebe'> ,> 'Joanna'> ]> genders> => [> 'Male'> ,> 'Female'> ,> 'Male'> ,> 'Female'> ,> 'Male'> ,> 'Female'> ,> 'Female'> ]> ages> => (> 35> ,> 36> ,> 38> ,> 34> )> # Create a zipped object combining the 'persons' and 'genders'> #lists along with the 'ages' tuple> zipped_result> => zip> (persons, genders, ages)> # Print the zipped object> print> (> 'Zipped result as a list:'> )> for> i> in> list> (zipped_result):> > print> (i)> |
>
>Produzione
Zipped result as a list: ('Chandler', 'Male', 35) ('Monica', 'Female', 36) ('Ross', 'Male', 38) ('Rachel', 'Female', 34)>
Decomprimere utilizzando zip()
Decomprimere significa riconvertire i valori compressi nel sé individuale così come erano. Questo viene fatto con l'aiuto di * operatore.
Python3
# initializing lists> name> => [> 'Manjeet'> ,> 'Nikhil'> ,> 'Shambhavi'> ,> 'Astha'> ]> roll_no> => [> 4> ,> 1> ,> 3> ,> 2> ]> marks> => [> 40> ,> 50> ,> 60> ,> 70> ]> # using zip() to map values> mapped> => zip> (name, roll_no, marks)> # converting values to print as list> mapped> => list> (mapped)> # printing resultant values> print> (> 'The zipped result is : '> , end> => '')> print> (mapped)> print> (> '
'> )> # unzipping values> namz, roll_noz, marksz> => zip> (> *> mapped)> print> (> 'The unzipped result:
'> , end> => '')> # printing initial lists> print> (> 'The name list is : '> , end> => '')> print> (namz)> print> (> 'The roll_no list is : '> , end> => '')> print> (roll_noz)> print> (> 'The marks list is : '> , end> => '')> print> (marksz)> |
tipi di dati successivi
>
>
Produzione
The zipped result is : [('Manjeet', 4, 40), ('Nikhil', 1, 50), ('Shambhavi', 3, 60), ('Astha', 2, 70)] The unzipped result: The name list is : ('Manjeet', 'Nikhil', 'Shambhavi', 'Astha') The roll_no list is : (4, 1, 3, 2) The marks list is : (40, 50, 60, 70)>
Utilizzo di zip() con Python Loops
Esistono molte possibili applicazioni che si possono dire eseguite utilizzando zip, sia esso database degli studenti o scorecard o qualsiasi altra utilità che richieda la mappatura dei gruppi. Di seguito è illustrato un piccolo esempio di scorecard.
Python3
# Python code to demonstrate the application of> # zip()> # initializing list of players.> players> => [> 'Sachin'> ,> 'Sehwag'> ,> 'Gambhir'> ,> 'Dravid'> ,> 'Raina'> ]> # initializing their scores> scores> => [> 100> ,> 15> ,> 17> ,> 28> ,> 43> ]> # printing players and scores.> for> pl, sc> in> zip> (players, scores):> > print> (> 'Player : %s Score : %d'> %> (pl, sc))> |
>
>Produzione
Player : Sachin Score : 100 Player : Sehwag Score : 15 Player : Gambhir Score : 17 Player : Dravid Score : 28 Player : Raina Score : 43>