Python zip()-methode neemt iterabele containers en retourneert een enkel iteratorobject, waarbij waarden uit alle containers in kaart zijn gebracht.
Python zip()-syntaxis
Het is gewend breng de vergelijkbare index van meerdere containers in kaart, zodat ze met slechts één entiteit kunnen worden gebruikt.
Syntaxis: zip(*iteratoren)
Parameters: Python-iterables of containers (lijst, string enz.)
Winstwaarde : Retourneert een enkel iteratorobject.
zip() in Python-voorbeelden
Python zip() met lijsten
In Python , wordt de functie zip() gebruikt om twee of meer te combineren lijsten (of andere iterabelen) tot één iterabel, waarbij elementen uit overeenkomstige posities aan elkaar worden gekoppeld. De resulterende iterabele bevat tupels , waarbij het eerste element uit elke lijst aan elkaar is gekoppeld, het tweede element uit elke lijst aan elkaar is gekoppeld, enzovoort.
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))> |
>
>Uitvoer
{('Nikhil', 1), ('Shambhavi', 3), ('Manjeet', 4), ('Astha', 2)}>
Python zip() met opsomming
De combinatie van zip() en opsommen() is handig in scenario's waarin u meerdere lijsten of tupels parallel wilt verwerken, en ook toegang tot hun indices nodig hebt voor een specifiek doel.
Python3
names> => [> 'Mukesh'> ,> 'Roni'> ,> 'Chari'> ]> ages> => [> 24> ,> 50> ,> 18> ]> for> i, (name, age)> in> enumerate> (> zip> (names, ages)):> > print> (i, name, age)> |
>
>Uitvoer
0 Mukesh 24 1 Roni 50 2 Chari 18>
Python zip() met woordenboek
De functie zip() in Python wordt gebruikt om twee of meer iterabele bestanden te combineren woordenboeken in een enkele iterabele, waarbij overeenkomstige elementen uit de invoer-iterabele aan elkaar worden gekoppeld als tupels. Wanneer zip() met woordenboeken wordt gebruikt, worden de sleutels en waarden van de woordenboeken aan elkaar gekoppeld op basis van hun positie in het woordenboek.
Python3
stocks> => [> 'GEEKS'> ,> 'For'> ,> 'geeks'> ]> prices> => [> 2175> ,> 1127> ,> 2750> ]> new_dict> => {stocks: prices> for> stocks,> > prices> in> zip> (stocks, prices)}> print> (new_dict)> |
>
>Uitvoer
{'GEEKS': 2175, 'For': 1127, 'geeks': 2750}>
Python zip() met Tuple
Bij gebruik met tupels, zip() werkt door de elementen uit tupels te koppelen op basis van hun posities. De resulterende iterabele bevat tupels waarbij de i-de tupel het i-de element van elke invoertupel bevat.
Python3
tuple1> => (> 1> ,> 2> ,> 3> )> tuple2> => (> 'a'> ,> 'b'> ,> 'c'> )> zipped> => zip> (tuple1, tuple2)> result> => list> (zipped)> print> (result)> |
>
>
Uitgang:
[(1, 'a'), (2, 'b'), (3, 'c')]>
Python zip() met meerdere iterables
De zip()-functie van Python kan ook worden gebruikt om meer dan twee iterabelen te combineren. Het kan meerdere iterabelen als invoer gebruiken en een iterabel van tupels retourneren, waarbij elke tupel elementen bevat van de overeenkomstige posities van de invoeriterabelen.
Python3
list1> => [> 1> ,> 2> ,> 3> ]> list2> => [> 'a'> ,> 'b'> ,> 'c'> ]> list3> => [> 'x'> ,> 'y'> ,> 'z'> ]> zipped> => zip> (list1, list2, list3)> result> => list> (zipped)> print> (result)> |
>
hoe het script in Linux uit te voeren
>Uitvoer
[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]>
Lijsten van ongelijke grootte zippen
De functie zip() herhaalt alleen de kleinste doorgegeven lijst. Als er lijsten met verschillende lengtes worden gegeven, zal de resulterende combinatie slechts zo lang zijn als de kleinste lijst is geslaagd. In het volgende codevoorbeeld:
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)> |
>
>Uitvoer
Zipped result as a list: ('Chandler', 'Male', 35) ('Monica', 'Female', 36) ('Ross', 'Male', 38) ('Rachel', 'Female', 34)>
Uitpakken met behulp van zip()
Uitpakken betekent het omzetten van de gecomprimeerde waarden terug naar het individuele zelf zoals ze waren. Dit gebeurt met behulp van * exploitant.
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)> |
>
>
Uitvoer
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)>
Zip() gebruiken met Python Loops
Er zijn veel mogelijke toepassingen waarvan kan worden gezegd dat ze met behulp van zip kunnen worden uitgevoerd, zij het studentendatabase of scorekaart of een ander hulpprogramma dat het in kaart brengen van groepen vereist. Hieronder ziet u een klein voorbeeld van een scorekaart.
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))> |
>
>Uitvoer
Player : Sachin Score : 100 Player : Sehwag Score : 15 Player : Gambhir Score : 17 Player : Dravid Score : 28 Player : Raina Score : 43>