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.