Python

Ako používať funkciu zip v Pythone

Ako používať funkciu zip v Pythone
Tento článok sa bude zaoberať príručkou o funkcii „zip“ dostupnou v štandardnej knižnici modulov Pythonu. Táto metóda umožňuje kombinovať a párovať prvky viacerých opakovateľných objektov. Na týchto pároch potom môžete spustiť ďalšiu logiku. V mnohých prípadoch je použitie funkcie „zip“ oveľa efektívnejšie a čistejšie ako použitie viacerých vnorených slučiek „for“.

Informácie o funkcii Zip

Ako už bolo uvedené, funkcia „zip“ sa používa na vytvorenie párov z prvkov viacerých opakovateľných objektov. V nasledujúcom príklade pochopíte základnú syntax a použitie funkcie zip:

list1 = ["a", "b", "c"]
list2 = ["jablko", "lopta", "mačka"]
zip = zip (zoznam1, zoznam2)
tlač (zoznam (zazipovaný))

Prvé dva príkazy vo vyššie uvedenej ukážke kódu definujú dva zoznamy obsahujúce niektoré prvky. Ďalej sa funkcia „zip“ používa na odovzdávanie premenných „list1“ a „list2“ ako argumentov. Toto je hlavná syntax funkcie „zip“. Musíte len odovzdať zoznamy alebo iné platné usporiadané tabuľky ako argumenty, ktorých prvky chcete skombinovať. Nakoniec sa príkaz na tlač použije na získanie výstupu premennej „zazipovaný“. Po spustení ukážky kódu uvedenej vyššie by ste mali získať nasledujúci výstup:

[('a', 'jablko'), ('b', 'lopta'), ('c', 'mačka')]

Upozorňujeme, že funkcia „zip“ vracia objekt typu „zip“, nie zoznam. Musíte ho previesť na iterovateľný typ, ako je to uvedené v tlačovom vyhlásení vyššie.

Zjednodušene povedané, funkcia „zip“ zachytáva prvky rovnakého indexu z dvoch zoznamov a kombinuje ich ako pár v n-tici. Takže 0. element zo „list1“ je kombinovaný s 0. elementom „list2“, 1. element zo „list1“ je skombinovaný s 1. elementom „list2“ atď. Funkcia zipsu sa pohybuje zľava doprava a n-tica obsahujúca spárované prvky má rovnaký index ako prvky v nich uložené.

Používanie zipsu, keď položky nemajú rovnaký počet prvkov

V príklade uvedenom vyššie majú oba zoznamy rovnaký počet prvkov. V prípade, že máte dočinenia s nejakým kódom, kde oba zoznamy nemajú rovnaký počet prvkov, funkcia „zip“ sa zastaví na poslednom prvku zoznamu, ktorý má najmenší počet prvkov.

V príklade nižšie sa funkcia „zip“ zastaví na prvku „c“ bez ohľadu na to, že zoznam „list2“ má ešte jeden prvok.

list1 = ["a", "b", "c"]
list2 = ["jablko", "lopta", "mačka", "bábika"]
zip = zip (zoznam1, zoznam2)
tlač (zoznam (zazipovaný))

Po spustení ukážky kódu uvedenej vyššie by ste mali získať nasledujúci výstup:

[('a', 'jablko'), ('b', 'lopta'), ('c', 'mačka')]

Pri použití funkcie zip môžete použiť viac ako dva veci

Funkcia „zip“ sa zvyčajne používa na porovnanie dvoch opakovateľných objektov. Do funkcie „zip“ však môžete zadať ľubovoľný počet opakovateľných tabuliek ako argumentov. Zásada zastavenia pri poslednom prvku najkratšieho zoznamu bude stále platná.

list1 = ["a", "b", "c"]
list2 = ["jablko", "lopta", "mačka", "bábika"]
list3 = ["5", "3"]
zip = zip (zoznam1, zoznam2, zoznam3)
tlač (zoznam (zazipovaný))

Po spustení ukážky kódu uvedenej vyššie by ste ako výsledok mali dostať nasledujúci výstup:

[('a', 'jablko', '5'), ('b', 'lopta', '3')]

Vytváranie individuálnych zoznamov z objektu typu zip

Ak už máte objekt „zip“, môžete ho použiť na repopuláciu jednotlivých zoznamov, ktoré sa predtým používali pri prvom vyvolaní funkcie zip na nich.

list1 = ["a", "b", "c"]
list2 = ["jablko", "lopta", "mačka", "bábika"]
list3 = ["5", "3"]
zip = zip (zoznam1, zoznam2, zoznam3)
l1, l2, l3 = zips (* na zips)
tlač (zoznam (l1), zoznam (l2), zoznam (l3))

Po spustení vyššie uvedenej ukážky kódu by ste ako výsledok mali dostať nasledujúci výstup:

['a', 'b'] ['jablko', 'lopta'] ['5', '3']

Vo vyššie uvedenej ukážke kódu je objekt „zip“ deflovaný pomocou operátora „*“. Deflované výsledky sa potom použijú na ďalšie volanie funkcie zip, ktorá vytvorí pôvodné zoznamy. Upozorňujeme, že ak ste pri prvom vytváraní objektu „zip“ použili zoznamy „zip“, nemusíte dostať všetky prvky späť do pôvodných zoznamov.

Používanie zipsu, ak chcete, aby prvky neboli najdlhšie znehybniteľné

Vo viacerých príkladoch vyššie ste si mohli všimnúť, že funkcia „zip“ sa štandardne zastaví na poslednom prvku najkratšej iterovateľnej položky. Čo ak chcete, aby pokračovalo v iterácii, kým nedosiahne posledný prvok najdlhšej iterácie?

V takom prípade budete musieť použiť metódu „zip_longest ()“ z modulu „itertools“ v Pythone. Funguje rovnako ako funkcia „zip“, s malým rozdielom, že sa zastaví na poslednom prvku najdlhšieho iterovateľného typu.

z itertools import zip_longest
list1 = ["a", "b", "c"]
list2 = ["jablko", "lopta", "mačka", "bábika"]
list3 = ["5", "3"]
zipped = zip_longest (zoznam1, zoznam2, zoznam3)
tlač (zoznam (zazipovaný))

Po spustení vyššie uvedenej ukážky kódu by ste ako výsledok mali dostať nasledujúci výstup:

[('a', 'jablko', '5'), ('b', 'lopta', '3'), ('c', 'mačka', žiadna), (žiadna, 'bábika', žiadna) ]

Chýbajúce hodnoty sa vyplnia ako objekty typu „Žiadny“. Môžete tiež zadať svoju vlastnú hodnotu, ktorú chcete vyplniť, a to tak, že odovzdáte ďalší argument „fillvalue“ metóde „zip_longest“.

z itertools import zip_longest
list1 = ["a", "b", "c"]
list2 = ["jablko", "lopta", "mačka", "bábika"]
list3 = ["5", "3"]
zipped = zip_longest (zoznam1, zoznam2, zoznam3, fillvalue = "moja_hodnota")
tlač (zoznam (zazipovaný))

Po spustení vyššie uvedenej ukážky kódu by ste ako výsledok mali dostať nasledujúci výstup:

[('a', 'jablko', '5'), ('b', 'lopta', '3'), ('c', 'mačka', 'moja_hodnota'), ('moja_hodnota', 'bábika ',' moja_hodnota ')]

Záver

Funkciu zip je možné emulovať pomocou niektorých príkazov cyklov a podmienok. Pomáha však udržiavať kód organizovaný a čistší odstránením zbytočnej výrečnosti a opakujúcich sa vyhlásení.

Hry 5 najlepších arkádových hier pre Linux
5 najlepších arkádových hier pre Linux
V dnešnej dobe sú počítače vážne stroje používané na hranie hier. Ak nemôžete dosiahnuť nové najvyššie skóre, budete vedieť, čo tým myslím. V tomto pr...
Hry Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 vydané minulý mesiac, je šiestym vývojovým vydaním v 1.13.séria x a prináša množstvo vylepšení, najmä používateľského rozhra...
Hry Ako nainštalovať League Of Legends na Ubuntu 14.04
Ako nainštalovať League Of Legends na Ubuntu 14.04
Ak ste fanúšikom League of Legends, potom je to pre vás príležitosť otestovať spustenie League of Legends. Upozorňujeme, že program PlayOnLinux podpor...