Wyjaśnienie list comprehensions w Pythonie z przykładami

List comprehensions zapewniają zwięzły sposób tworzenia list w Pythonie. Są bardziej czytelne i często bardziej wydajne niż tradycyjne pętle. W tym artykule przyjrzymy się, czym są list comprehensions, jak działają i podamy przykłady ilustrujące ich użycie.

Czym jest list comprehension?

List comprehension to kompaktowy sposób przetwarzania wszystkich lub części elementów w kolekcji i zwracania listy z wynikami. Składnia list comprehension jest następująca:

[expression for item in iterable if condition]

Tutaj expression jest bieżącym elementem iteracji, ale jest też wynikiem, którym możesz manipulować zanim stanie się elementem listy. iterable jest kolekcją, po której przechodzisz, a condition jest opcjonalnym filtrem, który obejmuje tylko elementy spełniające warunek.

Podstawowe przykłady

Tworzenie listy kwadratów

Aby utworzyć listę kwadratów liczb od 0 do 9, możesz użyć funkcji składniowej listy w następujący sposób:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
squares = [x ** 2 for x in numbers]
print(squares)

Wyjście:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Filtrowanie elementów

Możesz również dodać warunek filtrowania elementów. Na przykład, aby uzyskać tylko liczby parzyste z listy:

even_squares = [x ** 2 for x in numbers if x % 2 == 0]
print(even_squares)

Wyjście:

[0, 4, 16, 36, 64]

Spłaszczanie listy list

Jeśli masz listę list i chcesz ją spłaszczyć, możesz użyć składni listowej:

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [item for sublist in list_of_lists for item in sublist]
print(flattened)

Wyjście:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Zaawansowane przykłady

Stosowanie funkcji

Możesz stosować funkcje w ramach list comprehension. Na przykład, aby przekonwertować listę ciągów na wielkie litery:

words = ['hello', 'world', 'python']
uppercase_words = [word.upper() for word in words]
print(uppercase_words)

Wyjście:

['HELLO', 'WORLD', 'PYTHON']

Zagnieżdżone wyrażenia

List comprehensions można zagnieżdżać. Na przykład, aby utworzyć listę krotek (i, j), gdzie i i j są elementami z dwóch list:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
pairs = [(i, j) for i in list1 for j in list2]
print(pairs)

Wyjście:

[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

Wniosek

List comprehensions oferują potężny i zwięzły sposób generowania list w Pythonie. Mogą uprościć kod i uczynić go bardziej czytelnym, zastępując wiele wierszy kodu pętli jednym wierszem list comprehensions. Ćwicz używanie list comprehensions, aby poczuć się bardziej komfortowo z ich składnią i możliwościami.