Om zip -funksjon
Som nevnt tidligere, brukes "zip" -funksjon for å lage par fra elementer av flere iterable objekter. Tenk på eksemplet nedenfor for å forstå den grunnleggende syntaks og bruk av zip -funksjon:
liste1 = ["a", "b", "c"]De to første utsagnene i ovennevnte kodeprøve definerer to lister som inneholder noen elementer. Neste, "Zip" -funksjon brukes ved å passere "List1" og "List2" -variabler som argumenter. Dette er hovedsyntaks for "zip" -funksjonen. Du må bare passere lister eller andre gyldige bestilte iterables som argumenter hvis elementer du vil kombinere. Til slutt brukes utskriftserklæringen for å få utdataene fra "Zipped" -variabelen. Etter å ha kjørt kodeprøven som er nevnt over, bør du få følgende utdata:
[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]Merk at "Zip" -funksjonen returnerer et "Zip" -type og ikke en liste. Du må konvertere den til en iterable type, som vist i utskriftserklæringen ovenfor.
Enkelt sagt plukker "zip" -funksjonen opp elementer av samme indeks fra to lister og kombinerer dem som et par i en tuple. Så det 0. elementet fra “List1” er kombinert med det 0. elementet i “List2”, det første elementet fra “List1” er kombinert med det første elementet i “List2” og så videre. Zip -funksjon beveger seg fra venstre mot høyre og tupelen som inneholder sammenkoblede elementer har samme indeks som elementene som er lagret i dem.
Bruke zip når iterables ikke har samme antall elementer
I eksemplet nevnt ovenfor har begge listene like antall elementer. I tilfelle du har å gjøre med noen koder der begge listene ikke har samme antall elementer, vil "Zip" -funksjon stoppe ved det siste elementet på listen som har det laveste antallet elementer.
I eksemplet nedenfor vil "Zip" -funksjonen stoppe ved "C" -elementet, uavhengig av "List2" som har ett element til.
liste1 = ["a", "b", "c"]Etter å ha kjørt kodeprøven som er nevnt over, bør du få følgende utdata:
[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]Du kan bruke mer enn to iterabler når du bruker zip -funksjon
Vanligvis brukes "zip" -funksjon for å sammenligne to iterable objekter. Du kan imidlertid passere et hvilket som helst antall iterabler som argumenter til "zip" -funksjonen. Prinsippet om å stoppe ved det siste elementet på den korteste listen vil fortsatt være aktuelt.
liste1 = ["a", "b", "c"]Etter å ha kjørt kodeprøven som er nevnt ovenfor, bør du få følgende utdata som resultat:
[('A', 'Apple', '5'), ('B', 'Ball', '3')]Opprette individuelle lister fra et zip -objekt
Hvis du allerede har et "zip" -objekt, kan du bruke det til å repopulere individuelle lister som tidligere ble brukt når zip -funksjonen først ble kalt på dem.
liste1 = ["a", "b", "c"]Etter å ha kjørt kodeprøven som er nevnt ovenfor, bør du få følgende utdata som resultat:
['A', 'B'] ['Apple', 'Ball'] ['5', '3']I kodeprøven ovenfor tømmes "Zip" -objektet ved hjelp av "*" -operatøren. Deflaterte resultater blir deretter matet inn i en annen samtale til zip -funksjon som oppretter originale lister. Merk at du kanskje ikke får alle elementer tilbake i de originale listene hvis lister med ulik lengde ble brukt når "Zip" -objektet ble opprettet første gang.
Bruker zip når du vil forhindre elementer fra lengst iterable
I flere eksempler ovenfor kan du ha observert at "zip" -funksjonen som standard stopper ved det siste elementet i den korteste iterable. Hva om du vil at den skal fortsette å iterere til det når det siste elementet i den lengste iterable?
I et slikt tilfelle må du bruke “ZIP_Longest ()” -metoden fra Pythons “iterertools” -modul. Det fungerer det samme som "Zip" -funksjonen, med en liten forskjell som den stopper ved det siste elementet av den lengste iterable typen.
fra iterertools importerer zip_longestEtter å ha kjørt kodeprøven som er nevnt ovenfor, bør du få følgende utdata som resultat:
[('A', 'Apple', '5'), ('B', 'Ball', '3'), ('C', 'Cat', None), (Ingen, 'Doll', ingen) ]Manglende verdier er befolket som "ingen" type objekter. Du kan også levere din egen verdi for å fylle ved å sende et ekstra "FillValue" -argument til "ZIP_Longest" -metoden.
fra iterertools importerer zip_longestEtter å ha kjørt kodeprøven som er nevnt ovenfor, bør du få følgende utdata som resultat:
[('A', 'Apple', '5'), ('B', 'Ball', '3'), ('C', 'Cat', 'My_Value'), ('My_Value', 'Doll ',' my_value ')]Konklusjon
ZIP -funksjon kan emuleres ved hjelp av noen løkker og forholdserklæringer. Imidlertid hjelper det å holde kode organisert og renere ved å fjerne unødvendig verbositet og repeterende uttalelser.