W języku Python, tworzenie nowych list na podstawie istniejących sekwencji danych, takich jak listy, napisy czy krotki, jest ułatwione dzięki mechanizmowi zwanemu listami składanymi.
Ich uproszczona struktura umożliwia konstruowanie nowych list za pomocą zaledwie jednej linii kodu. W niniejszym poradniku nauczysz się, jak to osiągnąć.
W ciągu najbliższych kilku minut dowiesz się:
- Jak generować nowe listy przy użyciu pętli for,
- Jak stosować składnię list składanych w Pythonie oraz
- Jak modyfikować listy składane z użyciem instrukcji warunkowej if.
Ponadto, przeanalizujesz kilka przykładów, które pomogą ci w lepszym zrozumieniu koncepcji list składanych.
Zacznijmy!🌊
Jak tworzyć listy w Pythonie przy użyciu pętli?
Załóżmy, że dysponujesz listą liczb o nazwie 'nums’. Twoim celem jest utworzenie nowej listy, która będzie zawierała sześcian każdej liczby z listy 'nums’. Oto, jak możesz to zrobić za pomocą pętli for w Pythonie:
nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]
Powyższy kod realizuje następujące działania:
- Inicjalizuje pustą listę o nazwie 'num_cubes’.
- Przechodzi przez elementy listy 'nums’.
- Dla każdej liczby 'num’ oblicza jej sześcian, używając operatora potęgowania: num**3.
- Na zakończenie, dodaje wyliczoną wartość sześcianu do listy 'num_cubes’.
Warto zauważyć, że w Pythonie operator potęgowania ** jest stosowany zgodnie ze schematem: num**pow, co oznacza podniesienie liczby 'num’ do potęgi 'pow’.
Jednak istnieje bardziej efektywny sposób osiągnięcia tego samego celu, korzystając z list składanych w Pythonie. Przejdźmy do omówienia ich składni.
Składnia list składanych w Pythonie
Poniżej przedstawiona jest ogólna struktura list składanych.
<nowa_lista> = [<wyrażenie> for <element> in <sekwencja>]
Dokładniej przeanalizujmy powyższą składnię:
- Listy w Pythonie są definiowane przy użyciu nawiasów kwadratowych [], dlatego deklaracja list składanych musi znajdować się wewnątrz [].
- ’element’ w 'sekwencja’ oznacza iterowanie po sekwencji. Każdy obiekt w Pythonie, który umożliwia przechodzenie po swoich elementach w pętli i dostęp do nich, taki jak listy, krotki i łańcuchy znaków, jest uważany za obiekt iterowalny.
- ’wyrażenie’ reprezentuje działanie, które chcesz wykonać na każdym 'elemencie’ w 'sekwencji’, aby uzyskać wartość wynikową.
Proste, prawda?
Ogólnie rzecz biorąc, naszym zamiarem jest wykonanie pewnej operacji na wszystkich elementach listy (lub innej sekwencji iterowalnej), aby w konsekwencji otrzymać nową listę.
Wykorzystując tę koncepcję, możemy uprościć składnię, jak pokazano na ilustracji.
Składnia list składanych w Pythonie (autor zdjęcia)
Po zaznajomieniu się ze składnią, możemy przejść do praktyki. Możesz wykorzystać internetowe środowisko programistyczne newsblog.pl, aby prześledzić poniższe przykłady. Alternatywnie, możesz uruchomić je lokalnie.
Przykłady list składanych w Pythonie
W poprzedniej części utworzyliśmy nową listę 'num_cubes’ z listy 'nums’. Przekształćmy teraz ten proces, używając list składanych.
Użycie list składanych z liczbami
Wykorzystajmy teraz uproszczoną składnię w następujący sposób:
- <operacja>: W tym miejscu należy wyznaczyć sześcian każdej liczby. Zatem <operacja> zostanie zastąpiona przez num**3.
- <elementy>: Zmienną iteracyjną jest 'num’, czyli poszczególne liczby w liście.
- <lista>: Istniejącą listą jest 'nums’.
- Ostatecznie [num**3 for num in nums] stanowi pełne wyrażenie.
Podsumowując, otrzymujemy poniższy fragment kodu:
num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]
Gratulacje! Utworzyłeś swoje pierwsze wyrażenie z wykorzystaniem list składanych.🎉
Kontynuując, przeanalizujmy, jak działają listy składane z łańcuchami znaków.
Użycie list składanych z łańcuchami znaków
Załóżmy, że masz listę autorów, którą możesz zmodyfikować, wpisując swoich ulubionych. 😄
authors = ["jane austen","george orwell","james clear","cal newport"]
Warto zauważyć, że na powyższej liście nazwiska autorów są zapisane małymi literami. Naszym celem jest ich sformatowanie, aby każde imię i nazwisko zaczynało się wielką literą i zapisanie ich na nowej liście o nazwie 'author_list’.
W Pythonie metoda łańcucha znaków title() przyjmuje łańcuch jako argument i zwraca jego kopię z odpowiednio sformatowanym tytułem, tzn. pierwsza litera każdego słowa jest pisana wielką literą: Imię Nazwisko.
Oto, co musisz zrobić:
- Przejdź przez listę 'authors’ i dla każdego autora w tej liście,
- Wywołaj 'author.title()’ aby uzyskać kopię łańcucha ze zmienioną wielkością liter.
Poniższy kod Python realizuje to zadanie:
authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']
W przedstawionych wynikach, imiona i nazwiska wszystkich autorów zostały sformatowane zgodnie z zasadami tytułu, czyli tak jak chcieliśmy.
Użycie list składanych z wieloma listami
Do tej pory nauczyliśmy się, jak używać list składanych do tworzenia nowych list na podstawie jednej istniejącej. Teraz zobaczmy, jak stworzyć nową listę na podstawie kilku istniejących.
Rozważmy na przykład następujący problem: Mamy dwie listy o nazwach 'l_arr’ i 'b_arr’, które zawierają odpowiednio długości i szerokości 4 prostokątów.
Naszym zadaniem jest utworzenie nowej listy 'area’, która będzie zawierała pola powierzchni tych 4 prostokątów. Przypomnijmy, że pole powierzchni = długość * szerokość.
l_arr = [4,5,1,3] b_arr = [2,1,7,9]
Do obliczenia powierzchni każdego prostokąta potrzebne są elementy z obu list (’l_arr’ i 'b_arr’). Możemy to zrobić, wykorzystując funkcję 'zip()’ Pythona.
Funkcja 'zip()’ w Pythonie przyjmuje jedną lub więcej sekwencji iterowalnych jako argumenty, zgodnie ze składnią 'zip(*iterables)’. Funkcja ta zwraca iterator, który generuje krotki, gdzie i-ta krotka zawiera i-ty element z każdej sekwencji iterowalnej.
Poniższy schemat ilustruje to szczegółowo. Ponieważ listy 'l_arr’ i 'b_arr’ mają po 4 elementy, indeksy mieszczą się w zakresie od 0 do 3. Jak widać, krotka o indeksie 0 zawiera 'l_arr[0]’ i 'b_arr[0]’, krotka o indeksie 1 zawiera 'l_arr[1]’ i 'b_arr[1]’ i tak dalej.
Funkcja 'zip()’ w Pythonie (autor zdjęcia)
Zatem możemy iterować po 'zip(l_arr,b_arr)’, w następujący sposób:
area = [l*b for l,b in zip(l_arr,b_arr)] print(area) # Output [8,5,7,27]
W kolejnej sekcji dowiesz się, jak stosować instrukcje warunkowe wewnątrz list składanych.
Listy składane w Pythonie ze składnią warunków
Rozpocznijmy od rozbudowy poprzedniej składni list składanych.
Oto składnia:
<nowa_lista> = [<wyrażenie> for <element> in <sekwencja> if <warunek>]
Zamiast obliczać 'wyrażenie’ dla każdego elementu, chcemy to robić tylko dla tych, które spełniają określony 'warunek’, gdzie 'warunek’ jest oceniany jako Prawda. To prowadzi do uproszczonej składni, jak pokazano:
Listy składane w Pythonie ze składnią warunków (autor zdjęcia)
▶ Przejdźmy teraz do analizy przykładów kodu.
Listy składane w Pythonie z przykładami warunków
#1. Masz dany napis „Uczę się Pythona w 2022”. Twoim zadaniem jest wyodrębnienie wszystkich cyfr z tego napisu. Jak możesz to zrobić?
Metoda
Poniższy fragment kodu pokazuje, jak można zebrać listę wszystkich cyfr występujących w ciągu 'str1′.
str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']
Powyższy kod:
- Iteruje przez łańcuch znaków 'str1′,
- Dla każdego znaku sprawdza, czy jest on cyfrą, używając metody 'isdigit()’, i
- Dodaje znak do nowej listy 'digits’, tylko jeśli jest cyfrą.
Przeanalizujmy kolejny przykład.
#2. Masz listę owoców. 🍊 Chcesz utworzyć nową listę 'starts_with_b’, która będzie zawierała tylko owoce z listy 'fruits’, których nazwa rozpoczyna się na literę 'b’. Do określenia warunku można użyć metody 'startswith()’.
Metoda
fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana']
W rezultacie otrzymaliśmy 'blueberry’ i 'banana’, które są jedynymi owocami z listy 'fruits’, których nazwy rozpoczynają się na 'b’, dokładnie tak, jak oczekiwaliśmy.
Tym sposobem zakończyliśmy dyskusję na temat list składanych.
Podsumowanie
Mam nadzieję, że ten tutorial pomógł Ci zrozumieć, czym są listy składane w Pythonie.
Podsumujmy:
- Możesz utworzyć nową listę przy użyciu składni [<operacja> for <elementy> in <lista>].
- Dodatkowo, możesz użyć [<operacja> for <elementy> in <lista> if <warunek-jest-spełniony>] z instrukcją warunkową 'if’.
Oprócz tego, przeanalizowałeś także kilka przykładów. Na kolejnym etapie, możesz spróbować przepisać niektóre z istniejących pętli, które służą do tworzenia list w Pythonie, wykorzystując listy składane. Udanej nauki programowania! Do następnego poradnika. 😄
Teraz możesz przejść do tematu konwertowania list na słowniki lub dowiedzieć się, jak obsługiwać pliki w Pythonie.
newsblog.pl