
Привет, ребята, в предыдущем посте я попытался упростить функции Lambda и map, чтобы вы, ребята, поняли.
Теперь мы будем изучать оставшиеся вещи, а именно функции сокращения и фильтрации.
Уменьшить:
Функция Reduce своим именем просто означает, что она сводит итерируемый объект к одному значению.
Функция сокращения обычно принимает два параметра, похожих на функцию карты, эти параметры включают в себя один итерируемый объект, а другую функцию, которая применяется к итерируемому объекту, чтобы уменьшить его до одного значения.
Если seq = [s1, s2, s3, …, sn] является итерируемым объектом (списком), вызов reduce(function, sequence) работает следующим образом:
- Сначала к функции будут применены первые два элемента последовательности, т.е. func(s1,s2)
* Список, над которым работает reduce(), выглядит так: [ function(s1, s2), s3, … , sn ]
* На следующем шаге функция будет применена к предыдущему результату и третьему элементу списка, т.е. function(function(s1, s2),s3)
* Список выглядит так: [ function(function(s1, s2),s3), … , sn ]
* Так продолжается до тех пор, пока не останется только один элемент, и возвращаем этот элемент как результат reduce()
Давайте рассмотрим пример:
from functools import reduce lst =[1,2,3,4,5] reduce(lambda a,b: a+b,lst) output:15
давайте разберемся в примере, чтобы использовать функцию сокращения, нам нужно сначала импортировать ее из functools.
В примере мы определяем итерируемый список, а затем нашу функцию сокращения, которая берет два значения из списка и начинает добавлять их одно за другим.
С точки зрения непрофессионала пример можно объяснить так:
- Функция уменьшения берет 1,2 из списка, затем добавляет их, и результат добавляется к следующему элементу в списке, таким образом, весь список оценивается, и мы получаем значение, это функциональность функции сокращения.
Фильтр:
Функция фильтра используется для фильтрации элементов итерируемого объекта на основе определенного заданного условия.
Она принимает два параметра, аналогичные другим функциям, которые мы обсуждали: итерируемый объект и функция, которая фильтрует элементы в объекте.
Здесь функция должна возвращать логическое значение (либо True, либо False).
Эта функция будет применяться к каждому элементу итерации. Только если функция возвращает «True», элемент итерации будет включен в результат.
Давайте разберемся с функцией фильтра на примере:
#lets define a function which returns a boolean
def even_check(num):
if num%2 ==0:
return True
lst =[1,2,3,4,5,6,7,8]
list(filter(lambda x: x%2==0,lst))
output:[2,4,6,8]
Здесь, в приведенном выше примере, функция фильтра берет все элементы в списке и проверяет, четные они или нет, если Да, то она возвращает значение, если нет, то ничего не возвращает. Это функциональность фильтра.
filter() чаще используется с лямбда-функциями, потому что мы обычно используем filter для быстрой работы, когда мы не хотим писать всю функцию целиком