O funkcii Zip
Ako už bolo uvedené, funkcia zip sa používa na vytváranie párov z prvkov viacerých iterovateľných objektov. Na pochopenie základnej syntaxe a používania funkcie zip použite nasledujúci príklad:
zoznam 1= [„do“, 'b', 'c']
zoznam2= [„jablko“, 'lopta', 'mačka']
na zips= PSČ(zoznam 1,zoznam2)
vytlačiť (zoznam(na zips))
Prvé dva príkazy vo vyššie uvedenej ukážke kódu definujú dva zoznamy obsahujúce niektoré prvky. Ďalej sa používa funkcia zip, ktorá ako argumenty odovzdáva premenné list1 a list2. Toto je hlavná syntax funkcie zip. Musíte iba predložiť zoznamy alebo iné platné usporiadané iterácie ako argumenty, ktorých prvky chcete kombinovať. Nakoniec sa príkaz print použije na získanie výstupu skomprimovanej premennej. Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:
[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]
Všimnite si toho, že funkcia zip vracia objekt typu zip a nie zoznam. Musíte ho previesť na iterovateľný typ, ako je uvedené v tlačovom vyhlásení vyššie.
Jednoducho povedané, funkcia zip zbiera prvky rovnakého indexu z dvoch zoznamov a kombinuje ich ako pár v súčinnosti. Takže 0. prvok zo zoznamu1 je kombinovaný s 0 -tým prvkom zoznamu2, prvý prvok zo zoznamu1 je kombinovaný s prvým prvkom zoznamu2 a tak ďalej. Funkcia zip sa pohybuje zľava doprava a n -tica obsahujúca spárované prvky má rovnaký index ako prvky v nich uložené.
Použitie zipsu, keď iterácie nemajú rovnaký počet prvkov
V prípade 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í pri poslednom prvku zoznamu s najnižším počtom prvkov.
V nižšie uvedenom príklade sa funkcia zip zastaví na prvku c, bez ohľadu na to, že zoznam2 má ešte jeden prvok.
zoznam 1= [„do“, 'b', 'c']
zoznam2= [„jablko“, 'lopta', 'mačka', 'bábika']
na zips= PSČ(zoznam 1,zoznam2)
vytlačiť (zoznam(na zips))
Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:
[('a', 'apple'), ('b', 'ball'), ('c', 'cat')]Pri použití funkcie zip môžete použiť viac ako dve iterovateľné položky
Na porovnanie dvoch iterovateľných objektov sa zvyčajne používa funkcia zip. Do funkcie zip však môžete odoslať ľubovoľný počet opakovaní ako argumenty. Stále bude platiť princíp zastavenia pri poslednom prvku najkratšieho zoznamu.
zoznam 1= [„do“, 'b', 'c']zoznam2= [„jablko“, 'lopta', 'mačka', 'bábika']
zoznam 3= ['5', '3']
na zips= PSČ(zoznam 1,zoznam2,zoznam 3)
vytlačiť (zoznam(na zips))
Po spustení vyššie uvedenej ukážky kódu by ste mali dostať nasledujúci výstup:
[('a', 'apple', '5'), ('b', 'ball', '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é boli predtým použité pri prvom vyvolaní funkcie zip.
zoznam 1= [„do“, 'b', 'c']zoznam2= [„jablko“, 'lopta', 'mačka', 'bábika']
zoznam 3= ['5', '3']
na zips= PSČ(zoznam 1,zoznam2,zoznam 3)
l1,l2,l3= PSČ(*na zips)
vytlačiť (zoznam(l1), zoznam(l2), zoznam(l3))
Po spustení vyššie uvedenej ukážky kódu by ste mali dostať nasledujúci výstup:
['a', 'b'] ['jablko', 'guľa'] ['5', '3']V ukážke kódu vyššie je objekt zip vypustený pomocou operátora *. Vyfúknuté výsledky sa potom vložia do ďalšej funkcie volania na zip, ktorá vytvorí pôvodné zoznamy. Upozorňujeme, že ak sa pri prvom vytváraní objektu zip použili zoznamy s nerovnakou dĺžkou, nemusí sa vám vrátiť všetky prvky do pôvodných zoznamov.
Používanie zipsu, ak chcete, aby prvky neboli najdlhšie upraviteľné
Vo viacerých vyššie uvedených príkladoch ste si mohli všimnúť, že funkcia zip sa v predvolenom nastavení zastaví na poslednom prvku najkratšej iterácie. Čo keď chcete, aby iterácia pokračovala, kým sa nedostane k poslednému prvku najdlhšej iterácie?
V takom prípade budete musieť použiť metódu zip_longest () z modulu itertools Pythonu. Funguje rovnako ako funkcia zip, s jediným malým rozdielom, že sa zastaví na poslednom prvku najdlhšieho iterovateľného typu.
od itertools importzip_longestzoznam 1= [„do“, 'b', 'c']
zoznam2= [„jablko“, 'lopta', 'mačka', 'bábika']
zoznam 3= ['5', '3']
na zips=zip_longest(zoznam 1,zoznam2,zoznam 3)
vytlačiť (zoznam(na zips))
Po spustení vyššie uvedenej ukážky kódu by ste mali dostať nasledujúci výstup:
[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', None), (None, 'doll', None) ]Chýbajúce hodnoty sú vyplnené ako objekty typu Žiadny. Môžete tiež zadať svoju vlastnú hodnotu na vyplnenie tým, že metóde zip_longest pošlete ďalší argument fillvalue.
od itertools importzip_longestzoznam 1= [„do“, 'b', 'c']
zoznam2= [„jablko“, 'lopta', 'mačka', 'bábika']
zoznam 3= ['5', '3']
na zips=zip_longest(zoznam 1,zoznam2,zoznam 3,fillvalue='my_value')
vytlačiť (zoznam(na zips))
Po spustení vyššie uvedenej ukážky kódu by ste mali dostať nasledujúci výstup:
[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'doll ',' my_value ')]Záver
Funkciu zip je možné emulovať pomocou niektorých príkazov slučiek a podmienok. Pomáha však udržiavať organizovaný a čistejší kód tým, že odstraňuje nepotrebnú výrečnosť a opakujúce sa vyhlásenia.