Krajta

Jak používat funkci Zip v Pythonu

Jak používat funkci Zip v Pythonu
Tento článek se bude věnovat průvodci funkcí „zip“, který je k dispozici ve standardní knihovně modulů Pythonu. Tato metoda umožňuje kombinovat a spárovat prvky více iterovatelných objektů. Na těchto párech pak můžete spustit další logiku. V mnoha případech je použití funkce „zip“ mnohem efektivnější a čistší než použití více vnořených smyček „for“.

Funkce Zip

Jak již bylo uvedeno výše, funkce „zip“ se používá k vytvoření párů z prvků více iterovatelných objektů. Zvažte níže uvedený příklad, abyste pochopili základní syntaxi a použití funkce zip:

list1 = ["a", "b", "c"]
list2 = ["jablko", "koule", "kočka"]
zip = zip (seznam1, seznam2)
tisk (seznam (zazipovaný))

První dva příkazy ve výše uvedeném ukázce kódu definují dva seznamy obsahující některé prvky. Dále se funkce „zip“ používá k předávání proměnných „list1“ a „list2“ jako argumentů. Toto je hlavní syntaxe funkce „zip“. Musíte pouze předat seznamy nebo jiné platné uspořádané iterovatelné tabulky jako argumenty, jejichž prvky chcete kombinovat. Nakonec se příkaz print použije k získání výstupu proměnné „zazipovaný“. Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:

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

Upozorňujeme, že funkce „zip“ vrací objekt typu „zip“, nikoli seznam. Musíte jej převést na iterovatelný typ, jak je uvedeno v tiskovém prohlášení výše.

Jednoduše řečeno, funkce „zip“ sbírá prvky stejného indexu ze dvou seznamů a kombinuje je jako pár v n-tici. Takže 0. element z „list1“ je kombinován s 0. elementem „list2“, 1. element z „list1“ je kombinován s 1. elementem „list2“ atd. Funkce zip se pohybuje zleva doprava a n-tice obsahující spárované prvky má stejný index jako prvky v nich uložené.

Používání zipu, když položky nemají stejný počet prvků

Ve výše uvedeném příkladu mají oba seznamy stejný počet prvků. V případě, že máte co do činění s nějakým kódem, kde oba seznamy nemají stejný počet prvků, funkce „zip“ se zastaví u posledního prvku seznamu, který má nejnižší počet prvků.

V níže uvedeném příkladu se funkce „zip“ zastaví u prvku „c“, bez ohledu na to, že „list2“ bude mít ještě jeden prvek.

list1 = ["a", "b", "c"]
list2 = ["jablko", "koule", "kočka", "panenka"]
zip = zip (seznam1, seznam2)
tisk (seznam (zazipovaný))

Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:

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

Při použití funkce Zip můžete použít více než dvě věci

Funkce „zip“ se obvykle používá k porovnání dvou iterovatelných objektů. Funkci „zip“ však můžete předat libovolný počet iterabilních argumentů. Princip zastavení u posledního prvku nejkratšího seznamu bude stále platit.

list1 = ["a", "b", "c"]
list2 = ["jablko", "koule", "kočka", "panenka"]
list3 = ["5", "3"]
zip = zip (seznam1, seznam2, seznam3)
tisk (seznam (zazipovaný))

Po spuštění výše uvedeného ukázky kódu byste měli jako výsledek získat následující výstup:

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

Vytváření jednotlivých seznamů z objektu typu zip

Pokud již máte objekt „zip“, můžete jej použít k repopulaci jednotlivých seznamů, které byly dříve použity při prvním vyvolání funkce zip na nich.

list1 = ["a", "b", "c"]
list2 = ["jablko", "koule", "kočka", "panenka"]
list3 = ["5", "3"]
zip = zip (seznam1, seznam2, seznam3)
l1, l2, l3 = zip (* na zip)
tisk (seznam (l1), seznam (l2), seznam (l3))

Po spuštění výše uvedeného ukázky kódu byste měli jako výsledek získat následující výstup:

['a', 'b'] ['jablko', 'míč'] ['5', '3']

Ve výše uvedeném ukázce kódu je objekt „zip“ vyfouknut pomocí operátoru „*“. Deflované výsledky jsou poté přeneseny do dalšího volání funkce zip, která vytváří původní seznamy. Všimněte si, že nemusíte dostat všechny prvky zpět do původních seznamů, pokud byly při prvním vytvoření objektu „zip“ použity seznamy s nestejnou délkou.

Používání zipu, když chcete zabránit tomu, aby byly prvky co nejdéle ignorovatelné

V několika výše uvedených příkladech jste si možná všimli, že funkce „zip“ se ve výchozím nastavení zastaví u posledního prvku nejkratší iterovatelné. Co když chcete, aby pokračovalo v iteraci, dokud nedosáhne posledního prvku nejdelší iterace?

V takovém případě budete muset použít metodu „zip_longest ()“ z modulu „itertools“ v Pythonu. Funguje stejně jako funkce „zip“, s malým rozdílem, že se zastaví u posledního prvku nejdelší iterovatelného typu.

z itertools import zip_longest
list1 = ["a", "b", "c"]
list2 = ["jablko", "koule", "kočka", "panenka"]
list3 = ["5", "3"]
zip = zip_longest (seznam1, seznam2, seznam3)
tisk (seznam (zazipovaný))

Po spuštění výše uvedeného ukázky kódu byste měli jako výsledek získat následující výstup:

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

Chybějící hodnoty se naplní jako objekty typu „Žádný“. Můžete také zadat svoji vlastní hodnotu k vyplnění předáním dalšího argumentu „fillvalue“ metodě „zip_longest“.

z itertools import zip_longest
list1 = ["a", "b", "c"]
list2 = ["jablko", "koule", "kočka", "panenka"]
list3 = ["5", "3"]
zipped = zip_longest (list1, list2, list3, fillvalue = "my_value")
tisk (seznam (zazipovaný))

Po spuštění výše uvedeného ukázky kódu byste měli jako výsledek získat následující výstup:

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

Závěr

Funkci zip lze emulovat pomocí některých příkazů smyček a podmínek. Pomáhá však udržovat kód organizovaný a čistší odstraněním zbytečné výřečnosti a opakujících se příkazů.

Hry Nejlepší hry Oculus App Lab
Nejlepší hry Oculus App Lab
Pokud jste vlastníkem náhlavní soupravy Oculus, musíte mít informace o bočním nakládání. Sideloading je proces instalace neukládaného obsahu do náhlav...
Hry Top 10 her k hraní na Ubuntu
Top 10 her k hraní na Ubuntu
Platforma Windows byla jednou z dominujících platforem pro hraní her kvůli velkému procentu her, které se dnes vyvíjejí, aby nativně podporovaly Windo...
Hry 5 nejlepších arkádových her pro Linux
5 nejlepších arkádových her pro Linux
V dnešní době jsou počítače vážné stroje používané k hraní her. Pokud nemůžete získat nové vysoké skóre, budete vědět, co tím myslím. V tomto příspěvk...