Jak używać funkcji zip w Pythonie

Jak używać funkcji zip w Pythonie
W tym artykule obejmie przewodnik o funkcji „ZIP” dostępnej w standardowej bibliotece modułu Pythona. Ta metoda pozwala łączyć i sparować elementy wielu obiektów iteracyjnych. Następnie możesz uruchomić dalszą logikę na tych parach. W wielu przypadkach użycie funkcji „suwak” jest znacznie bardziej wydajne i czystsze niż użycie wielu zagnieżdżonych pętli „dla”.

O funkcji zip

Jak wspomniano wcześniej, funkcja „ZIP” jest używana do tworzenia par z elementów wielu iteracyjnych obiektów. Rozważ poniższy przykład, aby zrozumieć podstawową składnię i użycie funkcji ZIP:

LIST1 = [„A”, „B”, „C”]
List2 = [„Apple”, „Ball”, „Cat”]
Zpipped = Zip (List1, List2)
Drukuj (lista (zapinana))

Pierwsze dwa stwierdzenia w powyższej próbce kodu definiują dwie listy zawierające niektóre elementy. Następnie funkcja „ZIP” jest używana przez przekazanie zmiennych „List1” i „List2” jako argumentów. To jest główna składnia funkcji „ZIP”. Musisz tylko przekazać listy lub inne prawidłowe uporządkowane iterable jako argumenty, których elementy chcesz połączyć. Wreszcie instrukcja drukowania służy do uzyskania wyjścia zmiennej „zapinanej”. Po uruchomieniu próbki kodu wymienionego powyżej, należy uzyskać następujące dane wyjściowe:

[(„A”, „Apple”), („B”, „Ball”), („C”, „cat”)]

Zauważ, że funkcja „ZIP” zwraca obiekt typu „ZIP”, a nie listę. Musisz przekonwertować go na typowy typ, jak pokazano na powyższym instrukcji drukowania.

Mówiąc prosto, funkcja „zip” wybiera elementy tego samego indeksu z dwóch list i łączy je jako parę w krotce. Tak więc 0. element z „List1” jest połączony z 0. elementem „List2”, 1. element z „List1” jest połączony z 1. elementem „List2” i tak dalej. Funkcja zip porusza się od lewej do prawej, a krotek zawierający sparowane elementy ma taki sam wskaźnik, jak przechowywane w nich elementy.

Używanie ZIP, gdy iterable nie ma takiej samej liczby elementów

W powyższym przykładzie obie listy mają równą liczbę elementów. Jeśli masz do czynienia z kodem, w którym obie listy nie mają takiej samej liczby elementów, funkcja „ZIP” zatrzyma się na ostatnim elemencie listy o najniższej liczbie elementów.

W poniższym przykładzie funkcja „ZIP” zatrzyma się w elemencie „C”, niezależnie od „List2”, ma jeszcze jeden element.

LIST1 = [„A”, „B”, „C”]
list2 = [„Apple”, „Ball”, „Cat”, „Doll”]
Zpipped = Zip (List1, List2)
Drukuj (lista (zapinana))

Po uruchomieniu próbki kodu wymienionego powyżej, należy uzyskać następujące dane wyjściowe:

[(„A”, „Apple”), („B”, „Ball”), („C”, „cat”)]

Możesz użyć więcej niż dwóch iterabinów podczas korzystania z funkcji ZIP

Zwykle funkcja „zip” służy do porównania dwóch iteracyjnych obiektów. Możesz jednak przekazać dowolną liczbę iterabinów jako argumenty do funkcji „ZIP”. Zasada zatrzymania na ostatnim elemencie najkrótszej listy będzie nadal miała zastosowanie.

LIST1 = [„A”, „B”, „C”]
list2 = [„Apple”, „Ball”, „Cat”, „Doll”]
List3 = [„5”, „3”]
Zpipped = Zip (List1, List2, List3)
Drukuj (lista (zapinana))

Po uruchomieniu wyżej wymienionej próbki kodu należy uzyskać następujące dane wyjściowe w wyniku:

[(„A”, „Apple”, „5”), („B”, „Ball”, „3”)]

Tworzenie poszczególnych list z obiektu typu zip

Jeśli masz już obiekt „ZIP”, możesz go użyć do ponownego powtórzenia poszczególnych list, które były wcześniej używane, gdy funkcja ZIP została po raz pierwszy wywołana.

LIST1 = [„A”, „B”, „C”]
list2 = [„Apple”, „Ball”, „Cat”, „Doll”]
List3 = [„5”, „3”]
Zpipped = Zip (List1, List2, List3)
L1, L2, L3 = ZIP (*zamykany)
print (lista (l1), lista (l2), lista (l3))

Po uruchomieniu wyżej wymienionej próbki kodu należy uzyskać następujące dane wyjściowe w wyniku:

[„A”, „B”] [„Apple”, „Ball”] [„5”, „3”]

W powyższym kodzie obiekt „ZIP” jest deflowany za pomocą operatora „*”. Odchylone wyniki są następnie przekazywane do kolejnej funkcji wywołania do zip, która tworzy oryginalne listy. Zauważ, że możesz nie odzyskać wszystkich elementów na oryginalnych listach, jeśli listy nierównej długości zostały użyte, gdy obiekt „ZIP” został utworzony za pierwszym razem.

Korzystanie z ZIP, gdy chcesz powstrzymać elementy przed najdłuższym iteracją

W wielu powyższych przykładach mogłeś zauważyć, że funkcja „ZIP” domyślnie zatrzymuje. Co jeśli chcesz, aby kontynuował iterację, aż dotrze do ostatniego elementu najdłuższego?

W takim przypadku będziesz musiał użyć metody „Zip_longest ()” z modułu „Itertools” Pythona. Działa tak samo jak funkcja „zip”, z jedną niewielką różnicą, którą zatrzymuje w ostatnim elemencie najdłuższego typu.

z IterTools import zip_longest
LIST1 = [„A”, „B”, „C”]
list2 = [„Apple”, „Ball”, „Cat”, „Doll”]
List3 = [„5”, „3”]
Zpipped = Zip_longest (List1, List2, List3)
Drukuj (lista (zapinana))

Po uruchomieniu wyżej wymienionej próbki kodu należy uzyskać następujące dane wyjściowe w wyniku:

[(„A”, „Apple”, „5”), („B”, „Ball”, „3”), („C”, „cat”, none), (brak, „lalka”, none) ]

Brakujące wartości są wypełnione jako obiekty typu „brak”. Możesz także podać własną wartość, aby wypełnić, przekazując dodatkowy argument „FillValue” do metody „Zip_longest”.

z IterTools import zip_longest
LIST1 = [„A”, „B”, „C”]
list2 = [„Apple”, „Ball”, „Cat”, „Doll”]
List3 = [„5”, „3”]
Zpipped = Zip_longest (List1, List2, List3, FillValue = „My_Value”)
Drukuj (lista (zapinana))

Po uruchomieniu wyżej wymienionej próbki kodu należy uzyskać następujące dane wyjściowe w wyniku:

[(„A”, „Apple”, „5”), („B”, „Ball”, „3”), („C”, „cat”, „my_value”), („my_value”, „lalka ', „my_value”)]

Wniosek

Funkcję ZIP można naśladować za pomocą niektórych instrukcji pętli i warunków. Pomaga jednak w utrzymaniu zorganizowanego i czystszego kodu, usuwając niepotrzebną gadatość i powtarzające się stwierdzenia.