Jak korzystać z funkcji filter() w Pythonie
Dowiedz się, jak używać funkcji filter() języka Python do wyodrębniania elementów z kolekcji. Porównaj filtr ze wyrażeniami listowymi i wywołaniami zwrotnymi lambda.
Przegląd
Filtrowanie danych jest podstawowym zadaniem w programowaniu aplikacji. Często będziesz musiał przeszukać listę i wyodrębnić elementy spełniające określone kryteria, na przykład wyodrębnić aktywnych użytkowników z bazy danych profili lub odfiltrować liczby ujemne z dzienników czujników. W tym celu Python udostępnia wbudowane narzędzie funkcjonalne o nazwie `filter()`.
Funkcja `filter(funkcja, iterowalna)` przyjmuje jako argumenty funkcję filtrującą i wartość iterowalną. Argument funkcji musi zwracać wartość logiczną („True” lub „False”) dla każdego elementu. Funkcja `filter()` ocenia każdy element, zachowując tylko te, które mają wartość `True` i zwraca obiekt iteratora (obiekt `filter`) zawierający wyniki.
Podobnie jak `map()`, `filter()` ocenia elementy leniwie. Jeśli potrzebujesz natychmiast standardowej listy, rzutujesz dane wyjściowe za pomocą konstruktora `list()`: `list(filter(func, data))`. Jeśli jako parametr funkcji przekażesz wartość „None” (np. „filter(Brak, dane)”), Python automatycznie odfiltruje wszystkie elementy, które są fałszywe, co jest doskonałym skrótem do czyszczenia pustych wartości.
Dane wyjściowe kodu i wykonania
Ten skrypt demonstruje filtrowanie tablic numerycznych, wyodrębnianie elementów ze słownika i odrzucanie fałszywych pustych ciągów za pomocą funkcji filter().
numbers = [-5, -2, 0, 3, 8, -1]
# 1. Filter positive numbers using a lambda function
positives = list(filter(lambda x: x > 0, numbers))
print("Positives only:", positives)
# 2. Filter list of strings by character length
words = ["cat", "elephant", "dog", "giraffe"]
long_words = list(filter(lambda w: len(w) > 4, words))
print("Words longer than 4 chars:", long_words)
# 3. Shorthand: Remove all falsy values from a list by passing None
mixed_data = ["hello", "", "world", None, False, "active"]
clean_data = list(filter(None, mixed_data))
print("Falsy values removed:", clean_data)Positives only: [3, 8]
Words longer than 4 chars: ['elephant', 'giraffe']
Falsy values removed: ['hello', 'world', 'active']Wdrażanie krok po kroku
- Zdefiniuj funkcję, która akceptuje element i zwraca wartość logiczną reprezentującą kryteria filtru.
- Wywołaj filter(funkcja, iterowalna), aby utworzyć leniwy iterator dopasowań.
- Rzuć wynikowy obiekt filtru na listę za pomocą list(filter(...)), jeśli chcesz manipulować rekordami.
- Przekaż Brak jako argument funkcji, aby odfiltrować wszystkie fałszywe wartości (takie jak Brak, 0 i puste ciągi).
Często zadawane pytania
Co się stanie, jeśli funkcja przekazana do filter() nie zwróci wartości logicznej?
Python ocenia prawdziwość zwracanej wartości. Jeśli wartość ma wartość True w kontekście boolowskim, element zostaje zachowany.
Czy powinienem używać filter() czy ze zrozumieniem listy?
Często preferowane jest rozumienie listy z warunkiem if (np. [x dla x na liście warunku if]) ze względu na czytelność, ale funkcja filter() jest czysta i bardzo wydajna, szczególnie w przypadku korzystania z istniejących funkcji wbudowanych.
Powiązane tematy
Dowiedz się, jak używać funkcji lambda w Pythonie. Opanuj anonimowe funkcje, wbudowane wywołania zwrotne i sortowanie danych list za pomocą kluczy lambda.
Jak korzystać ze zrozumienia list w PythonieDowiedz 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ą.
Jak korzystać z funkcji map() w PythonieDowiedz się, jak używać funkcji map() języka Python. Opanuj stosowanie funkcji do iteracji bez pisania pętli i porównuj mapę ze wyrażeniami listowymi.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Funkcje Pythona
Opanuj funkcje Pythona. Dowiedz się, jak pisać kod wielokrotnego użytku za pomocą def, definiować argumenty, zwracać wartości i rozumieć zakres lokalnie i globalnie.
Ściągawka dotycząca funkcji modułu matematycznego Pythona
Skrócona instrukcja obsługi standardowej biblioteki matematycznej języka Python. Dowiedz się, jak korzystać z funkcji trygonometrycznych, logarytmicznych, zaokrąglających i arytmetycznych.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.