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”]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”]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”]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”]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_longestPo 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_longestPo 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.