Како користити Зип функцију у Питхону

How Use Zip Function Python



Овај чланак ће обухватити водич о зип функцији доступан у стандардној библиотеци модула Питхон -а. Ова метода вам омогућава да комбинујете и упарујете елементе више итерабилних објеката. Затим можете покренути додатну логику на овим паровима. У многим случајевима употреба зип функције је много ефикаснија и чишћа од употребе више угнежђених петљи.

О Зип функцији

Као што је раније речено, зип функција се користи за креирање парова од елемената вишеструко поновљивих објеката. Размотрите доњи пример да бисте разумели основну синтаксу и употребу зип функције:







лист1= ['до', 'б', 'ц']
лист2= ['јабука', 'лопта', 'мачка']
зиппед= зип(лист1,лист2)
принт (листа(зиппед))

Прве две изјаве у горњем узорку кода дефинишу две листе које садрже неке елементе. Затим се функција зип користи прослеђивањем променљивих лист1 и лист2 као аргумената. Ово је главна синтакса зип функције. Морате само проследити листе или друге ваљане поређене итерабиле као аргументе чије елементе желите да комбинујете. На крају, исказ принт користи се за добијање резултата зип варијабле. Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:



[('а', 'јабука'), ('б', 'лопта'), ('ц', 'мачка')]

Имајте на уму да функција зип враћа објект зип типа, а не листу. Морате га претворити у итерабилни тип, као што је приказано у горњој изјави за штампање.



Једноставно речено, зип функција преузима елементе истог индекса са две листе и комбинује их као пар у торци. Дакле, 0. елемент из листе1 је комбинован са 0. елементом листе2, први елемент из листе1 је комбинован са 1. елементом листе2 итд. Зип функција се помера слева надесно и тупле који садржи упарене елементе има исти индекс као и елементи ускладиштени у њима.





Коришћење Зип -а када Итераблес немају исти број елемената

У горе наведеном примеру, обе листе имају једнак број елемената. У случају да имате посла са неким кодом где обе листе немају исти број елемената, функција зип ће се зауставити на последњем елементу листе који има најмањи број елемената.

У доњем примеру, зип функција ће се зауставити на елементу ц, без обзира на то што лист2 има још један елемент.



лист1= ['до', 'б', 'ц']
лист2= ['јабука', 'лопта', 'мачка', 'лутка']
зиппед= зип(лист1,лист2)
принт (листа(зиппед))

Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:

[('а', 'јабука'), ('б', 'лопта'), ('ц', 'мачка')]

Када користите Зип функцију, можете користити више од два Итераблес

Обично се зип функција користи за упоређивање два итерабилна објекта. Међутим, можете пренети било који број итерабли као аргументе функцији зип. Принцип заустављања на последњем елементу најкраће листе и даље ће бити применљив.

лист1= ['до', 'б', 'ц']
лист2= ['јабука', 'лопта', 'мачка', 'лутка']
лист3= ['5', '3']
зиппед= зип(лист1,лист2,лист3)
принт (листа(зиппед))

Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:

[('а', 'јабука', '5'), ('б', 'лопта', '3')]

Креирање појединачних листа од објекта Зип типа

Ако већ имате зип објекат, можете га користити за поновно попуњавање појединачних листа које су се раније користиле при првом позивању зип функције.

лист1= ['до', 'б', 'ц']
лист2= ['јабука', 'лопта', 'мачка', 'лутка']
лист3= ['5', '3']
зиппед= зип(лист1,лист2,лист3)
л1,л2,л3= зип(*зиппед)
принт (листа(л1), листа(л2), листа(л3))

Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:

['а', 'б'] ['јабука', 'лопта'] ['5', '3']

У горњем узорку кода, зип објекат се дефлационира помоћу оператора *. Исцрпљени резултати се затим пребацују у другу функцију позива до зип -а која ствара оригиналне листе. Имајте на уму да можда нећете вратити све елементе на оригиналне листе ако су листе неједнаке дужине коришћене при првом стварању зип објекта.

Коришћење Зип -а када желите да елементи остану најдуже променљиви

У више горе наведених примера, можда сте приметили да се функција зип подразумевано зауставља на последњем елементу најкраћег понављања. Шта ако желите да настави да понавља све док не достигне последњи елемент најдужег понављања?

У том случају ћете морати да користите метод зип_лонгтх () из Питхон -овог итертоолс модула. Ради исто као и зип функција, с једном малом разликом што се зауставља на последњем елементу најдужег итерабилног типа.

фром итертоолс увоззип_ло Лонг
лист1= ['до', 'б', 'ц']
лист2= ['јабука', 'лопта', 'мачка', 'лутка']
лист3= ['5', '3']
зиппед=зип_ло Лонг(лист1,лист2,лист3)
принт (листа(зиппед))

Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:

[('а', 'аппле', '5'), ('б', 'балл', '3'), ('ц', 'цат', Ноне), (Ноне, 'долл', Ноне) ]

Недостајуће вредности се попуњавају као објекти типа Ноне. Такође можете навести своју вредност за попуњавање прослеђивањем додатног аргумента филлвалуе методи зип_лонгтх.

фром итертоолс увоззип_ло Лонг
лист1= ['до', 'б', 'ц']
лист2= ['јабука', 'лопта', 'мачка', 'лутка']
лист3= ['5', '3']
зиппед=зип_ло Лонг(лист1,лист2,лист3,филлвалуе='ми_валуе')
принт (листа(зиппед))

Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:

[('а', 'аппле', '5'), ('б', 'балл', '3'), ('ц', 'цат', 'ми_валуе'), ('ми_валуе', 'лутка ',' ми_валуе ')]

Закључак

Зип функција може се емулирати помоћу неких петљи и услова. Међутим, помаже у одржавању кода организованим и чистијим уклањањем непотребне опширности и понављајућих изјава.