Lista ze zrozumieniem w Pythonie – z przykładami

Opublikowany: 2022-02-18

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 wyrażeń listowych 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ę nums . I chciałbyś utworzyć kolejną listę zawierającą sześcian wszystkich liczb w nums . 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 .
  • nums listę liczb.
  • Uzyskaj dostęp do każdej liczby num i oblicz jej kostkę 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 .

Możesz to jednak 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 umieścić instrukcję rozłożenia listy w [] .
  • <item> w <iterable> 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.
  • <expression> to dane wyjściowe, które chcesz obliczyć dla każdego <item> w <iterable> .

I to brzmi prosto, tak?

Zasadniczo chcesz 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-zrozumienia-listy
Składnia listy ze zrozumieniem Pythona (zdjęcie autora)

Teraz, gdy nauczyłeś się składni, czas zacząć kodować. Możesz użyć internetowego IDE Pythona Geekflare, 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:

  • <do-this> : Tutaj musisz poszerzyć każdą num . Więc zamień <do-this> na num**3 .
  • <all-items> : Zmienna pętli to num — poszczególne liczby na liście.
  • <this-list> : Istniejąca lista to nums .
  • A [num**3 for num in nums] jest wyrażeniem końcowym.

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 authors 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 przechowywać na nowej liście o nazwie author_list .

Uwaga: W Pythonie metoda string title() przyjmuje ciąg znaków jako argument i zwraca kopię ciągu sformatowanego w tytule. Oznacza to, że pierwsza litera każdego słowa jest pisana wielką literą: First-name Last-name

Oto wszystko, co musisz zrobić:

  • przejdź przez listę authors i dla każdego author 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 tytule — 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 area listy, który zawiera obszar tych 4 prostokątów. Pamiętaj, area = length * breadth .

 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 iteracji jako argumenty ze składnią zip(*iterables) . Następnie zwraca iterator krotek, w których 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.

python-funkcja zip
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ć <expression> dla wszystkich elementów, chciałbyś to zrobić tylko dla tych elementów, które spełniają określony <condition> —gdzie, condition := True . A to prowadzi do uproszczonej składni, jak pokazano:

lista-zrozumienie-z-warunkiem-skladnia
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 <char>.isdigit() działa na znaku <char> 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 ,
  • uzyskaj dostęp do każdego char , aby sprawdzić, czy jest to cyfra za pomocą metody isdigit() , oraz
  • dodaj char do nowych digits listy tylko wtedy, gdy jest to cyfra.

Weźmy inny przykład.

#2. Masz listę owoców. I chciałbyś utworzyć listę starts_with_b zawierającą wszystkie owoce z listy fruits , które zaczynają się na b . Do napisania warunku można użyć metody startswith() .

<str>.startswith('char') zwraca True , jeśli <str> 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 'blueberry' i 'banana' które są dwoma owocami, które zaczynają się na 'b' na liście fruits , zgodnie z oczekiwaniami.

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ć [<zrób to> dla <all-items> w <this-list>] , aby utworzyć nową listę przy użyciu rozumienia listy.
  • Dodatkowo można użyć składni [<zrób to> dla <wszystkie-elementy> w <tej-liście> if <warunek-jest-prawda>] 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.