Вградената функция filter() на Python също е мощна; за извършване на процедура за филтриране на данни върху поредици като списъци, кортежи и низове. Функцията filter() се използва за прилагане на функция към всеки елемент на итерируем (като списък или кортеж) и връщане на друг итерируем, съдържащ само елементите, за които функцията връща True. По тези линии filter() ни позволява да филтрираме елементи от групиране въз основа на някакво условие. Първият аргумент може да бъде None, ако функцията не е налична и връща само елементи, които са True.
Синтаксис:
filter (function, iterable)
Параметри
функция: Това е функция. Ако е зададено на None, връща само елементи, които са True.
Итерируем: Всяка итерируема последователност като списък, кортеж и низ.
И двата параметъра са задължителни.
Връщане
Връща същото като върнато от функцията.
Нека видим някои примери за функция filter(), за да разберем нейната функционалност.
Python filter() Функция Пример 1
Този прост пример връща стойности, по-високи от 5, като използва филтърна функция. Вижте примера по-долу.
Код
# 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))
Изход:
[6]
Кодът дефинира функция, наречена filterdata, която приема един аргумент x. В тази функция проверяваме, ако приемем, че x е по-голямо от 5, и при условие, че това е вярно, отпечатваме x. След това извикваме функцията filter(), като предаваме filterdata като основен аргумент и кортеж (1, 2, 6) като последващ аргумент. Функцията filter() прилага функцията filterdata() към всеки елемент от кортежа и връща итератор, който съдържа само елементите, които изпълняват условието x > 5. Накрая преобразуваме итератора в списък, използвайки функцията list(). и отпечатайте резултата.
Следват няколко допълнителни примера за това как да използвате метод filter() в Python:
Пример 2:
Филтриране на празни низове от списък:
prime без код в java
Код
ритик рошан
# 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)
Изход:
[ 'hello', 'world' ]
В този пример функцията ламбда проверява в случай, че всеки низ не е празен, като тества, като приема, че е еквивалентен на празния низ (''). Функцията filter() връща друга итерируема, съдържаща само непразните низове.
Пример 3:
Филтрирайте отрицателните числа от списък:
Код
# 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)
Изход:
[1, 3, 5]
В този пример функцията ламбда проверява, като приема, че всяко число е неотрицателно чрез тестване в случай, че е по-изпъкнало от или еквивалентно на нула (0). Функцията filter() връща друга итерируема, съдържаща само неотрицателните числа.
Пример 4:
Филтриране на дубликати от списък:
Код
# 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)
Изход:
[ 1, 4, 5 ]
В този пример функцията ламбда проверява в случай, че всяко число се показва само един път в списъка с числа, като брои колко често се показва (numbers.count(x)) и тества в случай, че броят е еквивалентен на 1. Функцията filter() връща друга итерируема, съдържаща само уникалните числа.
Забележка: Важно е, че в Python 3 функцията filter() връща итерируем елемент и това означава, че наистина искате да го промените напълно в списък (както е показано в примерите по-горе), за да го включите като списък. Въпреки това в Python 2 функцията filter() връща списък, разбира се.
Заключение:
И накрая, функцията filter() е мощен инструмент за манипулиране на данни в Python. Чрез филтриране на итерируем въз основа на предварително дефинирано условие можете бързо и ефективно да разделите данните, които наистина искате. Можете също така да използвате filter() в комбинация с други функции на Python, за да извършвате по-объркващи манипулации с данни.