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.