В Python есть три основные функции, а именно: filter(), Map() и Reduc(). Они предоставляют нам функции фильтрации, сопоставления и агрегирования соответственно. В предыдущем разделе мы просто использовали функцию filter() в сочетании с анонимной функцией. Ниже мы подробно рассмотрим ее использование.
При фильтрации и фильтрации данных мы обычно используем функцию filter(), которая поможет нам быстро решить проблему. Ее синтаксический формат:
фильтр (функция, итерируемый объект)
В функции фильтра поместите нашу фильтрацию или метод фильтрации, то есть имя функции , спереди и сохраните итерируемый объект сзади. Давайте рассмотрим следующий пример:
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))#Просто нужны имена функций, параметры не нужны
Результат вывода:
<filterobjectat0x034C2DD8>
Что касается этого примера, мы сначала определяем функцию test(), которая возвращает свое значение, если x — четное число, а затем используем функцию test() для фильтрации списка my_list через функцию filter(), но выходной результат < filter по адресу 0x034C2DD8>, здесь нужно отметить, что возвращаемое значение функции filter() является итерируемым объектом, и нам нужно обращаться к значениям итеративно или использовать функцию list() для принудительного преобразования типов.
deftest(x):ifx%2==0:returnxmy_list=[1,2,3,4,5,6]print(filter(test,my_list))foriinfilter(test,my_list):print('после итерации Данные: ',i)print('Использовать метод list():',list(filter(test,my_list)))
Результат:
Данных в итерации: 2 Данных в итерации: 4 Данных в итерации: 6 Использование метода list(): [2, 4, 6]
Мы уже много раз использовали функцию map(). Например, когда мы вводим несколько значений, мы будем использовать функцию map(), когда нам нужно ввести четыре значения:
a,b,c,d=map(int,input().split())print(a,b,c,d)
Синтаксический формат функции map():
карта (функция, итерируемый объект)
При использовании функции map() мы в основном используем ее для обработки данных. Данные в итерируемом объекте сохраняются после обработки функцией. Мы продолжаем использовать функцию list() для хранения.
Давайте сначала рассмотрим приведенный выше пример ввода четырех значений. Int — это функция, а значение, введенное с помощью input().splite, — это итерируемый объект, который сохраняется в объекте карты после обработки функцией int.
Мы можем использовать функцию map() для обработки всех данных в последовательности с помощью функции, см. следующий пример:
Мы сохраняем буквы в списке, и если есть строчная буква, делаем ее прописной.
Код выглядит следующим образом:
deftest(x):ifx.islower():returnx.upper()else:returnxmy_list=['d','o','t','C','p','P']print(list(map) (тест,мой_список)))
Результат:
['Д','О','Т','С','П','П']
Функция test() сначала оценит x. Если это строчная буква, она вернет прописную букву. Если это не строчная буква, она вернет ее значение.
Функция уменьшения() используется для агрегирования итерируемых объектов с помощью функциональных методов.
Формат синтаксиса:
уменьшить (функция, итерируемый объект [, начальное значение])
Например, мы знаем, что список — это [1,2,3,4], и нам нужно найти сумму всех элементов в списке, умноженных последовательно. Мы можем использовать функцию уменьшения().
Функция fromfunctoolsimportreduce#reduce определена в модуле functools и ее необходимо ввести deftest(x,y):returnx*ymy_list=[1,2,3,4]print(reduce(test,my_list))
Результат:
Первая строка кода представляет этот метод, и модуль будет объяснен позже. Функция test() возвращает два данных для умножения, а затем список my_list обрабатывается с помощью функции уменьшения().
Процесс обработки выглядит следующим образом:
Сначала выполните первый шаг, затем получите результат и умножьте его на следующий, а затем перейдите к последней цифре.
Первые две из этих трех функций широко используются. Освоение этих трех функций может помочь нам решить ряд сложных проблем. В следующем разделе мы узнаем о рекурсивных функциях.