zip() v Pythone

metóda Python zip(). vezme iterovateľné kontajnery a vráti jeden objekt iterátora s namapovanými hodnotami zo všetkých kontajnerov.

Syntax Python zip().

Je zvyknutý zmapovať podobný index viacerých kontajnerov, aby ich bolo možné použiť len pomocou jedinej entity.

Syntax: zip(*iterátory)

parametre: Iterovateľné položky alebo kontajnery Pythonu (zoznam, reťazec atď.)
Návratová hodnota: Vráti jeden objekt iterátora.

zip() v príkladoch Pythonu

Python zip() so zoznamami

In Python , funkcia zip() sa používa na spojenie dvoch alebo viacerých zoznamy (alebo akékoľvek iné iterovateľné) do jedného iterovateľného, ​​kde sú prvky z príslušných pozícií spárované dohromady. Výsledný iterovateľný obsahuje tuples , kde je prvý prvok z každého zoznamu spárovaný dohromady, druhý prvok z každého zoznamu je spárovaný dohromady atď.

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))>

Výkon

{('Nikhil', 1), ('Shambhavi', 3), ('Manjeet', 4), ('Astha', 2)} 

Python zip() s enumeratom

Kombinácia zip() a enumerate() je užitočný v scenároch, kde chcete spracovať viacero zoznamov alebo n-tic paralelne a tiež potrebujete získať prístup k ich indexom na akýkoľvek konkrétny účel.

Python3




names> => [> 'Mukesh'> ,> 'Roni'> ,> 'Chari'> ]> ages> => [> 24> ,> 50> ,> 18> ]> for> i, (name, age)> in> enumerate> (> zip> (names, ages)):> > print> (i, name, age)>

Výkon

0 Mukesh 24 1 Roni 50 2 Chari 18 

Python zip() so slovníkom

Funkcia zip() v Pythone sa používa na kombináciu dvoch alebo viacerých iterovateľných slovníkov do jednej iterovateľnej jednotky, kde sú zodpovedajúce prvky zo vstupnej iterovateľnej jednotky spárované ako n-tice. Pri použití zip() so slovníkmi spáruje kľúče a hodnoty slovníkov na základe ich pozície v slovníku.

Python3




stocks> => [> 'GEEKS'> ,> 'For'> ,> 'geeks'> ]> prices> => [> 2175> ,> 1127> ,> 2750> ]> new_dict> => {stocks: prices> for> stocks,> > prices> in> zip> (stocks, prices)}> print> (new_dict)>

Výkon

{'GEEKS': 2175, 'For': 1127, 'geeks': 2750} 

Python zip() s Tuple

Pri použití s ​​n-ticami, PSČ() funguje párovaním prvkov z n-tic na základe ich pozícií. Výsledná iterovateľná jednotka obsahuje n-tice, kde i-tá n-tice obsahuje i-tý prvok z každej vstupnej n-tice.

Python3




tuple1> => (> 1> ,> 2> ,> 3> )> tuple2> => (> 'a'> ,> 'b'> ,> 'c'> )> zipped> => zip> (tuple1, tuple2)> result> => list> (zipped)> print> (result)>

Výkon:

[(1, 'a'), (2, 'b'), (3, 'c')] 

Python zip() s viacerými iterovateľnými

Funkciu zip() v Pythone možno použiť aj na kombináciu viac ako dvoch iterovateľných. Môže prijať viacero iterovateľných jednotiek ako vstup a vrátiť iterovateľnú n-ticu, kde každá n-tica obsahuje prvky zo zodpovedajúcich pozícií vstupných iterovateľných jednotiek.

Python3




list1> => [> 1> ,> 2> ,> 3> ]> list2> => [> 'a'> ,> 'b'> ,> 'c'> ]> list3> => [> 'x'> ,> 'y'> ,> 'z'> ]> zipped> => zip> (list1, list2, list3)> result> => list> (zipped)> print> (result)>

Výkon

[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')] 

Zipsové zoznamy nerovnakej veľkosti

Funkcia zip() bude opakovať iba najmenší zoznam. Ak zadáte zoznamy rôznych dĺžok, výsledná kombinácia bude len taká dlhá, ako bude prejdený najmenší zoznam. V nasledujúcom príklade kódu:

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)>

Výkon

Zipped result as a list: ('Chandler', 'Male', 35) ('Monica', 'Female', 36) ('Ross', 'Male', 38) ('Rachel', 'Female', 34) 

Rozbalenie pomocou zip()

Rozbalenie znamená konvertovanie zazipovaných hodnôt späť na individuálne ja také, aké boli. To sa deje pomocou * operátor.

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)>

Výkon

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) 

Použitie zip() s Python Loops

Existuje veľa možných aplikácií, o ktorých sa dá povedať, že sa spúšťajú pomocou zipsu databázu študentov alebo výsledkovú listinu alebo akýkoľvek iný nástroj, ktorý vyžaduje mapovanie skupín. Malý príklad bodovacej karty je uvedený nižšie.

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))>

Výkon

Player : Sachin Score : 100 Player : Sehwag Score : 15 Player : Gambhir Score : 17 Player : Dravid Score : 28 Player : Raina Score : 43