Lista ze zrozumieniem w Pythonie – z przykładami

W Pythonie listy składane pomagają tworzyć nowe listy z istniejących elementów iteracyjnych, takich jak listy, ciągi znaków i krotki.

Ich zwięzła składnia pozwala tworzyć nowe listy w zaledwie jednym wierszu kodu. A ten samouczek nauczy Cię, jak możesz to zrobić.

W ciągu najbliższych kilku minut nauczysz się:

  • Jak utworzyć nową listę za pomocą pętli for,
  • Składnia do używania list składanych w Pythonie i
  • Jak modyfikować listy składane za pomocą instrukcji warunkowej if.

Ponadto napiszesz kilka przykładów, które pomogą Ci lepiej zrozumieć rozumienie list.

Zanurzmy się.🌊

Jak tworzyć listy Pythona za pomocą pętli?

Załóżmy, że masz listę liczb nums. I chciałbyś stworzyć kolejną listę zawierającą sześcian wszystkich liczb w liczbach. Oto jak to zrobisz 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]

W powyższym kodzie mamy następujące kroki:

  • Zainicjuj pustą listę num_cubes.
  • Przewiń listę liczb.
  • Uzyskaj dostęp do każdej liczby num i oblicz jej sześcian za pomocą operatora potęgowania: num**3.
  • Na koniec dodaj wartość w sześcianie do listy num_cubes

Uwaga: W Pythonie operator potęgowania ** jest używany ze składnią: num**pow — liczba num jest podnoszona do potęgi pow.

Jednak możesz to zrobić łatwiej, korzystając ze zrozumienia list w Pythonie. Przejdźmy do nauki jego składni.

Składnia list składanych w Pythonie

Ogólna składnia dla rozumienia list jest pokazana poniżej.

<new_list> = [<expression> for <item> in <iterable>]

Przeanalizujmy powyższą składnię.

  • W Pythonie listy są oddzielone parą nawiasów kwadratowych []—dlatego musisz dołączyć oświadczenie dotyczące rozumienia listy w ciągu [].
  • w oznacza, że ​​przechodzisz przez iterację. Każdy obiekt Pythona, przez który można przejść w pętli i uzyskać dostęp do poszczególnych elementów — takich jak listy, krotki i łańcuchy — jest iterowalnymi.
  • to dane wyjściowe, które chcesz obliczyć dla każdego elementu w .

I brzmi to prosto, tak?

Zasadniczo chciałbyś zrobić coś dla wszystkich elementów na liście (lub dowolnej iterowalnej), aby uzyskać nową listę.

Korzystając z tego, możemy uprościć składnię, jak pokazano na poniższym obrazku.

Składnia ze zrozumieniem listy w Pythonie (zdjęcie autora)

Teraz, gdy nauczyłeś się składni, czas zacząć kodować. Możesz użyć internetowego IDE Pythona newsblog.pl, aby śledzić te przykłady. Możesz też uruchomić je na swoim lokalnym komputerze.

Przykłady zrozumienia list w Pythonie

W poprzedniej sekcji utworzyłeś nową listę num_cubes z nums. Zacznijmy od przepisania tego za pomocą rozumienia listy.

Korzystanie ze zrozumienia listy z liczbami

Teraz użyjmy uproszczonej składni w następujący sposób:

  • : Tutaj musisz poszerzyć każdą liczbę. Zastąp więc przez num**3.
  • : Zmienna pętli to num — poszczególne liczby na liście.
  • : Istniejąca lista to nums.
  • I [num**3 for num in nums] jest ostatecznym wyrażeniem.

Podsumowując, mamy następujący fragment kodu:

num_cubes = [num**3 for num in nums]
print(num_cubes)

# Output
[8, 27, 125, 343]

Gratulacje, zakodowałeś swoje pierwsze rozumienie listy.🎉

Idąc dalej, popracujmy z łańcuchami Pythona.

Korzystanie z list składanych z ciągami

Załóżmy, że masz autorów listy — możesz przepisać poniższą listę ze swoimi ulubionymi autorami.😄

authors = ["jane austen","george orwell","james clear","cal newport"]

Zwróć uwagę, że na powyższej liście nazwiska autorów są pisane małymi literami. Chcielibyśmy teraz sformatować je w wielkości liter i zapisać je na nowej liście o nazwie autor_lista.

Uwaga: w Pythonie metoda string tytuł() akceptuje ciąg jako argument i zwraca kopię ciągu sformatowanego w tytule. Oznacza to, że pierwsza litera każdego słowa jest pisana wielką literą: Imię Nazwisko

Oto wszystko, co musisz zrobić:

  • przejdź przez listę autorów i dla każdego autora na liście,
  • wywołaj author.title() , aby uzyskać kopię ciągu z zapisaną wielkością liter.

A kod Pythona do tego jest pokazany poniżej:

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 powyższym wyniku przyjrzyj się, jak imiona i nazwiska wszystkich autorów zostały sformatowane w przypadku tytułu — o co nam chodziło.

Korzystanie ze zrozumienia list z wieloma listami

Do tej pory nauczyłeś się używać rozumienia list do tworzenia nowych list z jednej istniejącej listy. Teraz nauczmy się tworzyć nową listę z wielu list.

Rozważmy na przykład następujący problem: Masz dwie listy l_arr i b_arr zawierające długości i szerokości 4 prostokątów.

I musisz utworzyć nowy obszar listy, który zawiera obszar tych 4 prostokątów. Pamiętaj, powierzchnia = długość * szerokość.

l_arr = [4,5,1,3]
b_arr = [2,1,7,9]

Do obliczenia powierzchni potrzebne będą elementy z obu list (l_arr i b_arr). Możesz to zrobić za pomocą funkcji zip() Pythona.

Uwaga: W Pythonie funkcja zip() przyjmuje jedną lub więcej iterable jako argumenty ze składnią zip(*iterables). Następnie zwraca iterator krotek, gdzie krotka i zawiera element i z każdej iteracji.

Poniższy obraz opisuje to szczegółowo. Masz 4 wartości w l_arr i b_arr, więc zakres indeksów wynosi od 0 do 3. Jak widać, krotka 0 zawiera l_arr[0] i b_arr[0]krotka 1 zawiera l_arr[1] i b_arr[1]i tak dalej.

Funkcja Python zip() (zdjęcie autora)

Dlatego możesz przejść przez zip(l_arr,b_arr), jak pokazano poniżej:

area = [l*b for l,b in zip(l_arr,b_arr)]
print(area)

# Output
[8,5,7,27]

W następnej sekcji dowiesz się, jak używać instrukcji warunkowych wewnątrz list składanych.

Zrozumienie list w Pythonie ze składnią warunków

Zacznijmy od zbudowania poprzedniej składni dla rozumienia list.

Oto składnia:

<new_list> = [<expression> for <item> in <iterable> if <condition>]

Zamiast obliczać dla wszystkich elementów, chciałbyś to zrobić tylko dla tych elementów, które spełniają określony —gdzie, warunek := Prawda. A to prowadzi do uproszczonej składni, jak pokazano:

Zrozumienie list w Pythonie ze składnią warunków (zdjęcie autora)

▶ Po tym przejdźmy do przykładów kodu.

Zrozumienie list w Pythonie z przykładami warunków

#1. Dostajesz ciąg „Uczę się Pythona w 2022”. Chciałbyś otrzymać listę wszystkich cyfr w tym ciągu. Więc jak to robisz?

W Pythonie .isdigit() działa na znaku i zwraca True, jeśli jest to cyfra (0-9); w przeciwnym razie zwraca False.

Poniższy fragment kodu pokazuje, jak zebrać listę wszystkich cyfr 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']

W powyższym kodzie:

  • zapętlisz łańcuch str1,
  • uzyskać dostęp do każdego znaku, aby sprawdzić, czy jest to cyfra za pomocą metody isdigit(), oraz
  • dodaj znak do nowych cyfr listy tylko wtedy, gdy jest to cyfra.

Weźmy inny przykład.

#2. Masz listę owoców.🍊 I chciałbyś utworzyć listę zaczyna_od_b, która zawiera wszystkie owoce z listy owoców, które zaczynają się na b. Do napisania warunku można użyć metody startedwith() .

.startswith(’char’) zwraca True, jeśli zaczyna się od 'char’; w przeciwnym razie zwraca False.

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 powyższym wyniku otrzymujemy „jagody” i „banan”, które są dwoma owocami, które zaczynają się na „b” na liście owoców, tak jak się spodziewaliśmy.

I to kończy naszą dyskusję na temat rozumienia listy.

Wniosek

Mam nadzieję, że ten samouczek pomógł ci zrozumieć listy składane w Pythonie.

Podsumujmy:

  • Możesz użyć [<do this> for <all-items> in <this-list>] aby utworzyć nową listę za pomocą rozumienia listy.
  • Dodatkowo możesz użyć składni [<do this> for <all-items> in <this-list> if <condition-is-True>] z instrukcją warunkową if.

Dodatkowo zakodowałeś również kilka przykładów. W następnym kroku możesz spróbować przepisać niektóre z istniejących pętli Pythona do tworzenia list przy użyciu rozumienia list. Udanego kodowania! Do następnego samouczka.😄

Możesz teraz przyjrzeć się, jak przekonwertować listę na słownik lub dowiedzieć się, jak obsługiwać pliki w Pythonie.