logo

Funkcja filter() w Pythonie

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.