Wbudowana w Pythona funkcja filter() również jest potężna; do wykonywania procedury filtrowania danych na sekwencjach takich jak listy, krotki i ciągi znaków. Funkcja filter() służy do stosowania funkcji do każdego elementu iterowalnego (takiego jak lista lub krotka) i zwracania innego iterowalnego elementu zawierającego tylko te elementy, dla których funkcja przywraca True. Idąc tym tropem, filter() pozwala nam odfiltrować elementy z grupowania na podstawie pewnego warunku. Pierwszym argumentem może być None, jeśli funkcja nie jest dostępna i zwraca tylko elementy, które mają wartość True.
Składnia:
filter (function, iterable)
Parametry
funkcjonować: To jest funkcja. Jeśli ustawione na None, zwracane są tylko elementy, które mają wartość True.
Iterowalne: Dowolna iterowalna sekwencja, taka jak lista, krotka i ciąg znaków.
Obydwa parametry są wymagane.
Powrót
Zwraca to samo, co zwraca funkcja.
Zobaczmy kilka przykładów funkcji filter(), aby zrozumieć jej funkcjonalność.
kompozycja relacji
Przykład funkcji filter() w Pythonie 1
Ten prosty przykład zwraca wartości większe niż 5 przy użyciu funkcji filtru. Zobacz poniższy przykład.
Kod
# Python filter() function example def filterdata(x): if x>5: return x # Calling function result = filter(filterdata,(1,2,6)) # Displaying result print(list(result))
Wyjście:
[6]
Kod definiuje funkcję o nazwie filterdata, która przyjmuje pojedynczy argument x. W tej funkcji sprawdzamy, zakładając, że x jest większe niż 5 i jeśli to prawda, wypisujemy x. Następnie wywołujemy funkcję filter(), podając filterdata jako główny argument i krotkę (1, 2, 6) jako kolejny argument. Funkcja filter() stosuje funkcję filterdata() do każdego elementu krotki i zwraca iterator zawierający tylko elementy spełniające warunek x > 5. Na koniec konwertujemy iterator na listę za pomocą funkcji list() i wydrukuj wynik.
Poniżej znajduje się kilka dodatkowych przykładów wykorzystania metody filter() w Pythonie:
Przykład 2:
Odfiltruj puste ciągi z listy:
Kod
# Python filter() function example strings = [ '', 'hello', '', 'world', '' ] # Using filter() to remove empty strings from the list result = list(filter(lambda x: x != '', strings)) # Printing the result print(result)
Wyjście:
[ 'hello', 'world' ]
W tym przykładzie funkcja lambda sprawdza, czy każdy ciąg znaków nie jest pusty, zakładając, że jest on odpowiednikiem pustego ciągu („”). Funkcja filter() zwraca kolejną iterację zawierającą tylko niepuste ciągi.
Przykład 3:
Odfiltruj liczby ujemne z listy:
Kod
# Python filter() function example numbers = [ 1, -2, 3, -4, 5, -6 ] # Using filter() to remove negative numbers from the list result = list(filter(lambda x: x >= 0, numbers)) # Printing the result print(result)
Wyjście:
[1, 3, 5]
W tym przykładzie funkcja lambda sprawdza, czy każda liczba jest nieujemna, sprawdzając, czy jest ona bardziej widoczna lub równa zero (0). Funkcja filter() zwraca kolejną iterację zawierającą tylko liczby nieujemne.
Przykład 4:
Odfiltruj duplikaty z listy:
Kod
# Python filter() function example numbers = [ 1, 2, 3, 2, 4, 3, 5 ] # Using filter() to remove duplicate numbers from the list result = list(filter(lambda x: numbers.count(x) == 1, numbers)) # Printing the result print(result)
Wyjście:
[ 1, 4, 5 ]
W tym przykładzie funkcja lambda sprawdza, czy każda liczba pojawia się tylko raz na liście liczb, zliczając, jak często się pojawia (numbers.count(x)) i sprawdzając, czy liczba jest równoważna 1. Funkcja filter() zwraca kolejną iterację zawierającą tylko unikalne liczby.
Uwaga: Istotne jest, że w Pythonie 3 funkcja filter() zwraca wartość iterowalną, co oznacza, że naprawdę chcesz ją całkowicie zmienić na listę (jak pokazano w powyższych przykładach), aby uwzględnić ją jako listę. Niemniej jednak w Pythonie 2 funkcja filter() zwraca oczywiście listę.
Wniosek:
Wreszcie funkcja filter() jest potężnym narzędziem do manipulacji danymi w Pythonie. Filtrując iterowalne dane w oparciu o wstępnie zdefiniowany warunek, możesz szybko i skutecznie oddzielić dane, których naprawdę potrzebujesz. Możesz także użyć filter() w połączeniu z innymi funkcjami Pythona, aby wykonywać bardziej kłopotliwe manipulacje danymi.