Pytonorm

Hur man använder Zip-funktion i Python

Hur man använder Zip-funktion i Python
Den här artikeln kommer att täcka en guide om "zip" -funktionen tillgänglig i Pythons standardmodulbibliotek. Denna metod låter dig kombinera och para ihop element i flera iterabla objekt. Du kan sedan köra ytterligare logik på dessa par. I många fall är det mycket effektivare och renare att använda en "zip" -funktion än att använda flera, kapslade "för" loopar.

Om Zip-funktion

Som tidigare nämnts används "zip" -funktionen för att skapa par från element i flera iterabla objekt. Tänk på exemplet nedan för att förstå den grundläggande syntaxen och användningen av zip-funktionen:

list1 = ["a", "b", "c"]
list2 = ["äpple", "boll", "katt"]
zippad = zip (list1, list2)
skriva ut (lista (blixtlås))

De två första påståendena i ovanstående kodexempel definierar två listor som innehåller några element. Därefter används "zip" -funktionen genom att skicka variablerna "list1" och "list2" som argument. Detta är huvudsyntaxen för "zip" -funktionen. Du behöver bara skicka listor eller andra giltiga ordnade iterables som argument vars element du vill kombinera. Slutligen används utskriftsuttrycket för att få utdata från variabeln "zippad". Efter att ha kört kodprovet som nämns ovan bör du få följande utdata:

[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]

Observera att funktionen "zip" returnerar ett objekt av "zip" -typ och inte en lista. Du måste konvertera den till en iterabel typ, som visas i utskriften ovan.

Enkelt uttryckt plockar "zip" -funktionen element av samma index från två listor och kombinerar dem som ett par i en tuple. Så det 0: e elementet från "list1" kombineras med det 0: e elementet i "list2", det första elementet från "list1" kombineras med det första elementet i "list2" och så vidare. Zip-funktionen flyttas från vänster till höger och tupeln som innehåller parade element har samma index som elementen lagrade i dem.

Använda Zip när Iterables inte har samma antal element

I exemplet som anges ovan har båda listorna lika många element. Om du har att göra med någon kod där båda listorna inte har samma antal element kommer "zip" -funktionen att stanna vid det sista elementet i listan som har det lägsta antalet element.

I exemplet nedan kommer ”zip” -funktionen att stanna vid ”c” -elementet, oavsett om “list2” har ett element till.

list1 = ["a", "b", "c"]
list2 = ["äpple", "boll", "katt", "docka"]
zippad = zip (list1, list2)
skriva ut (lista (blixtlås))

Efter att ha kört kodprovet som nämns ovan bör du få följande utdata:

[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]

Du kan använda mer än två spår när du använder Zip-funktionen

Vanligtvis används "zip" -funktionen för att jämföra två iterabla objekt. Du kan dock skicka valfritt antal iterables som argument till "zip" -funktionen. Principen att stanna vid det sista elementet i den kortaste listan kommer fortfarande att tillämpas.

list1 = ["a", "b", "c"]
list2 = ["äpple", "boll", "katt", "docka"]
list3 = ["5", "3"]
zippad = zip (list1, list2, list3)
skriva ut (lista (blixtlås))

Efter att ha kört kodprovet som nämns ovan bör du få följande resultat som resultat:

[('a', 'apple', '5'), ('b', 'ball', '3')]

Skapa enskilda listor från ett objekt av zip-typ

Om du redan har ett "zip" -objekt kan du använda det för att fylla i enskilda listor som tidigare användes när zip-funktionen först anropades.

list1 = ["a", "b", "c"]
list2 = ["äpple", "boll", "katt", "docka"]
list3 = ["5", "3"]
zippad = zip (list1, list2, list3)
l1, l2, l3 = zip (* zippad)
skriva ut (lista (l1), lista (l2), lista (l3))

Efter att ha kört kodprovet som nämns ovan bör du få följande resultat som resultat:

['a', 'b'] ['apple', 'ball'] ['5', '3']

I kodprovet ovan deflateras "zip" -objektet med hjälp av "*" -operatören. Deflaterade resultat matas sedan in i en annan anrop till zip-funktion som skapar originallistor. Observera att du kanske inte får tillbaka alla element i originallistorna om listor med olika längd användes när "zip" -objektet skapades första gången.

Använda dragkedja när du vill hålla element från längsta spårbara

I flera exempel ovan kan du ha observerat att "zip" -funktionen som standard stoppar vid det sista elementet i den kortaste iterabla. Vad händer om du vill att det ska fortsätta itera tills det når det sista elementet i den längsta iterabla?

I ett sådant fall måste du använda metoden "zip_longest ()" från Pythons modul "itertools". Den fungerar på samma sätt som "zip" -funktionen, med en liten skillnad att den stannar vid det sista elementet av den längsta iterabla typen.

från itverktyg importerar zip_longest
list1 = ["a", "b", "c"]
list2 = ["äpple", "boll", "katt", "docka"]
list3 = ["5", "3"]
zippad = zip_longest (list1, list2, list3)
skriva ut (lista (blixtlås))

Efter att ha kört kodprovet som nämns ovan bör du få följande resultat som resultat:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', None), (None, 'doll', None) ]

Saknade värden fylls som objekt av typen "Ingen". Du kan också ange ditt eget värde att fylla genom att skicka ett extra "fillvalue" -argument till "zip_longest" -metoden.

från itverktyg importerar zip_longest
list1 = ["a", "b", "c"]
list2 = ["äpple", "boll", "katt", "docka"]
list3 = ["5", "3"]
zipped = zip_longest (list1, list2, list3, fillvalue = "my_value")
skriva ut (lista (blixtlås))

Efter att ha kört kodprovet som nämns ovan bör du få följande resultat som resultat:

[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'doll ',' min_värde ')]

Slutsats

Zip-funktionen kan emuleras med några uttalanden om slingor och villkor. Det hjälper emellertid till att hålla koden organiserad och renare genom att ta bort onödig storhet och upprepade uttalanden.

De bästa Oculus App Lab-spelen
Om du är Oculus-headsetägare måste du vara förtjust i sidoladdning. Sideladdning är processen för att installera icke-butiksinnehåll på ditt headset. ...
Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...
5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...