Funkcja filter() w Pythonie to wbudowana funkcja, która służy do filtrowania elementów sekwencji (takich jak listy czy krotki) na podstawie podanej funkcji predykatu. Zwraca iterator z tymi elementami, dla których predykat zwraca wartość True. Jest to elegancki sposób na selektywne przetwarzanie danych bez konieczności pisania pętli for, co czyni kod bardziej zwięzłym i czytelnym.
Przykład w e-commerce
Rozważmy sklep internetowy z danymi o zamówieniach. Chcemy wyfiltrować zamówienia o wartości powyżej 500 zł, aby zidentyfikować te generujące największy przychód.
# Przykładowe dane: lista zamówień z wartościami
zamowienia = [120, 450, 780, 320, 650, 200, 910]
# Definicja predykatu: funkcja sprawdzająca wartość > 500
def wysokowartosciowe(zamowienie):
return zamowienie > 500
# Filtrowanie za pomocą filter()
wysokie_zamowienia = list(filter(wysokowartosciowe, zamowienia))
# Wyświetlenie wyniku
print(wysokie_zamowienia)Wynik:
Wyjaśnienie: filter() stosuje predykat do każdego elementu listy i tworzy iterator z tymi spełniającymi warunek.
Zastosowanie
Kiedy używać filter()?
- Gdy potrzebujesz wybrać podzbiór danych na podstawie warunku, np. produkty w promocji, aktywni użytkownicy czy transakcje powyżej progu.
- W połączeniu z lambda dla jednorazowych predykatów:
list(filter(lambda x: x > 500, dane)). - Do optymalizacji pamięci – zwraca iterator, nie kopiuje całej listy od razu.
- W analizie danych e-commerce: filtrowanie koszyków porzuconych, zamówień z określonego regionu czy produktów z niską marżą.
Unikaj w prostych przypadkach, gdzie czytelniejsza będzie lista składniowa [x for x in dane if warunek].
Podsumowanie
filter() przyspiesza przetwarzanie dużych zbiorów danych w e-commerce, umożliwiając szybkie decyzje biznesowe oparte na kluczowych podzbiorach.