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
pokladňa pomocou git
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
java reťazec obsahuje
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
odstránenie posledného commit git
# 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>