Jak korzystać ze zrozumienia list w Pythonie

Dowiedz się, jak używać wyrażeń listowych w Pythonie. Twórz zwięzłe pętle, stosuj filtry warunkowe i buduj macierze z przejrzystą składnią wizualną.

Wypróbuj to rozwiązanie w Edytorze

Przegląd

Rozumienie list to jedna z najpopularniejszych i najbardziej kultowych funkcji języka Python. Oferuje zwięzłą, wyrazistą i bardzo czytelną składnię do tworzenia nowej listy na podstawie istniejącej iterowalności (takiej jak lista, zakres lub krotka). Pozwala zastąpić wielowierszowe pętle „for” i instrukcje inicjujące listę pojedynczą linią kodu.

Podstawowa składnia rozumienia listowego to `[wyrażenie elementu w iterowalności]`. W skrócie ta składnia jest wysoce zoptymalizowana w implementacji Pythona, dzięki czemu działa szybciej niż standardowe pętle „for”, które dołączają elementy za pomocą „.append()”. Idealnie nadaje się do stosowania przekształceń matematycznych lub modyfikowania elementów.

Rozumienie list obsługuje także filtrowanie warunkowe przy użyciu klauzul „if”, umożliwiając selektywne uwzględnianie elementów (np. „[x dla x w danych, jeśli x % 2 == 0]”). Mimo że wyrażenia listowe są niezwykle potężne, należy je stosować ostrożnie: jeśli zrozumienie jest bardzo złożone lub zagnieżdżone, lepiej napisać standardowe pętle, aby zachować czytelność.

Dane wyjściowe kodu i wykonania

Ten skrypt demonstruje podstawowe zrozumienie list, filtrowanie za pomocą warunków i przekształcanie wartości ciągów.

list_comprehensions.py
Spróbuj w Edytorze
# 1. Traditional for-loop way to build a list
squares_loop = []
for x in range(1, 6):
    squares_loop.append(x**2)
print("Loop squares:", squares_loop)

# 2. List comprehension way (same outcome)
squares_comp = [x**2 for x in range(1, 6)]
print("Comp squares:", squares_comp)

# 3. Filtering elements with an 'if' clause (even numbers only)
evens = [n for n in range(1, 11) if n % 2 == 0]
print("Even numbers:", evens)

# 4. String modifications using comprehensions
names = ["alice", "bob", "charlie"]
caps = [name.capitalize() for name in names]
print("Capitalized:", caps)
Wyjście terminala
Loop squares: [1, 4, 9, 16, 25]
Comp squares: [1, 4, 9, 16, 25]
Even numbers: [2, 4, 6, 8, 10]
Capitalized: ['Alice', 'Bob', 'Charlie']

Wdrażanie krok po kroku

  • Wskaż na liście treść pętli i wyrażenie, które chcesz przechwycić.
  • Ustrukturyzuj zrozumienie jako [wyrażenie elementu w iterowalności].
  • Dołącz opcjonalny warunek if na końcu, aby dynamicznie filtrować elementy.

Często zadawane pytania

Czy mogę używać instrukcji if-else w rozumieniu listy?

Tak! Umieść klauzulę if-else przed pętlą for: [x if x > 0 else 0 for x w danych].

Jakie są różnice między wyrażeniami listowymi a wyrażeniami generatorowymi?

W wyrażeniach listowych używane są nawiasy kwadratowe i natychmiast zwracana jest pełna lista. Wyrażenia generatora używają nawiasów i zwracają leniwy obiekt generatora, co oszczędza pamięć w przypadku dużych zbiorów danych.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.