Python — универсальный и мощный язык программирования, предлагающий широкий набор встроенных функций для выполнения различных операций. Как разработчик Python, важно иметь четкое представление об этих функциях и о том, как их можно использовать для повышения эффективности и результативности вашего кода.
В этой статье мы рассмотрим некоторые важные встроенные функции Python. От lambda
, map()
и filter()
до reduce()
и enumerate()
мы углубимся в синтаксис, использование и преимущества каждой из этих функций.
Лямбда-функция
- Лямбда-функция, также известная как анонимная функция, — это функция, определенная без имени.
- Это небольшая функция с одним выражением, которая может принимать любое количество аргументов, но может иметь только одно выражение.
Общий синтаксис лямбда-функции:
lambda arguments: expression
Здесь arguments
— это аргументы, передаваемые лямбда-функции, а expression
— это единственное выражение, которое лямбда-функция оценивает и возвращает.
Например, рассмотрим следующую лямбда-функцию, которая принимает два аргумента и возвращает их сумму.
add = lambda a, b: a + b print(add(5, 3)) # Output: 8
карта
map()
позволяет применить заданную функцию к каждому элементу итерации и вернуть новую итерацию с результатами.- Эту функцию можно использовать для быстрого применения преобразования к каждому элементу списка, кортежа или другого итерируемого объекта.
Синтаксис следующий:
map(function, iterable)
Например, рассмотрим следующий код, который использует функцию map()
для возведения в квадрат каждого элемента списка:
numbers = [1, 2, 3, 4, 5] squared_numbers = map(lambda x: x**2, numbers) print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
- Как видно из приведенного выше примера, функция
map()
использует функциюlambda
lambda x: x**2
для каждого элемента спискаnumbers
. - Полученный итератор затем преобразуется в список с помощью функции
list()
. - Функцию
map()
также можно использовать с несколькими итерируемыми объектами. но когда мы использовали несколько итераций, функция, предоставляемаяmap()
, должна принимать то же количество аргументов, что и количество итераций. - Например, рассмотрим следующий код, который использует функцию
map()
для вычисления произведения двух списков:
numbers1 = [1, 2, 3] numbers2 = [4, 5, 6] product = map(lambda x, y: x*y, numbers1, numbers2) print(list(product)) # Output: [4, 10, 18]
Уменьшать
reduce()
позволяет применить заданную функцию к каждому элементу итерации и свести ее к одному значению.- Функция
reduce()
является частью модуляfunctools
и может использоваться для выполнения различных вычислений с итерируемыми объектами.
Синтаксис следующий:
reduce(function, iterable[, initializer])
Здесь function
— это функция, которая будет применяться к каждому элементу итерации, а iterable
— это итерация, к которой будет применяться функция. Параметр initializer
является необязательным начальным значением для сокращения. Если инициализатор не указан, в качестве начального значения используется первый элемент итерации.
Например, рассмотрим следующий код, который использует функцию reduce()
для вычисления произведения списка чисел:
from functools import reduce numbers = [1, 2, 3, 4, 5] product = reduce(lambda x, y: x*y, numbers) print(product) # Output: 120
В этом примере функция reduce()
используется для применения функции lambda
lambda x, y: x*y
к каждой паре элементов в списке numbers
. Полученное значение является произведением всех чисел в списке.
Функцию reduce()
также можно использовать с начальным значением. Например, рассмотрим следующий код, который использует функцию reduce()
для вычисления суммы списка чисел, начиная с начального значения 10:
from functools import reduce numbers = [1, 2, 3, 4, 5] sum = reduce(lambda x, y: x+y, numbers, 10) print(sum) # Output: 25
В этом примере функция reduce()
используется для применения функции lambda
lambda x, y: x+y
к каждой паре элементов в списке numbers
, начиная с начального значения 10. Результирующее значение представляет собой сумму всех чисел в списке плюс начальное значение .
Фильтр
- Функция
filter()
используется для фильтрации элементов из итерации на основе заданного условия. - Он принимает два аргумента, первый аргумент — это функция, которая возвращает логическое значение, а второй аргумент — это итерация, которую необходимо отфильтровать.
Синтаксис следующий:
filter(function, iterable)
- Здесь функция, которая используется для проверки каждого элемента
iterable
. Если функция возвращаетTrue
для определенного элемента, то этот элемент включается в вывод. - Если функция возвращает
False
для определенного элемента, то этот элемент исключается из вывода.
Например, рассмотрим следующий код, который использует функцию filter()
для фильтрации четных чисел из списка:
numbers = [1, 2, 3, 4, 5, 6] filtered_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(filtered_numbers) # Output: [2, 4, 6]
- В приведенном выше примере функция используется для применения функции
lambda
lambda x: x % 2 == 0
к каждому элементу спискаnumbers
. Функцияlambda
проверяет, является ли элемент четным или нет. - Если элемент четный, возвращается
True
, а если нечетный, возвращаетсяFalse
. Затем функция создает новую итерацию, содержащую только те элементы исходного спискаnumbers
, для которых функцияlambda
вернулаTrue
.
Функцию filter()
можно также использовать с другими функциями. Например
def is_positive(number): return number >= 0 numbers = [-1, 2, 3, -4, 5, -6] filtered_numbers = list(filter(is_positive, numbers)) print(filtered_numbers) # Output: [2, 3, 5]
- В приведенном выше примере функция
filter()
используется с функциейis_positive()
, которая возвращаетTrue
, если введенное число неотрицательно, иFalse
, если оно отрицательное. - Затем функция
filter()
создает новую итерацию, содержащую только неотрицательные элементы исходного спискаnumbers
.
перечислить
- Функция
enumerate()
— это встроенная функция, которая используется для итерации по итерируемому объекту, такому как список или строка, при этом отслеживая индекс текущего элемента. - Он возвращает итератор кортежей, где каждый кортеж содержит индекс элемента и сам элемент.
Синтаксис следующий:
enumerate(iterable, start=0)
- Параметр
iterable
— это итерируемый объект, который вы хотите перечислить, а необязательный параметрstart
— это значение индекса, с которого начинается перечисление. Если вы не укажете значение дляstart
, по умолчанию перечисление начнется с 0.
Вот пример использования enumerate()
для перебора списка строк:
fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry'] for index, fruit in enumerate(fruits): print(index, fruit)
Выход:
0 apple 1 banana 2 cherry 3 date 4 elderberry
- Вы также можете указать начальное значение для перечисления, передав значение для параметра
start
. Например:
fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry'] for index, fruit in enumerate(fruits, start=1): print(index, fruit)
Выход:
1 apple 2 banana 3 cherry 4 date 5 elderberry
- Функция
enumerate()
полезна в ситуациях, когда вам нужно выполнить итерацию по итерируемому объекту, а также отслеживать индекс каждого элемента. Он часто используется в циклах и может быть полезным инструментом в широком диапазоне приложений Python.
Спасибо, что прочитали. Если вы обнаружите, что что-то не так или есть лучшие способы сделать это, дайте мне знать в комментариях ниже.
Если вам понравилась публикация, нажмите кнопку 👏 ниже, чтобы другие могли найти ее полезной. Вы можете подписаться на меня наGitHub и связаться со мной на Linkedin.