Розуміння функцій Python Map, Filter і Reduce

Python надає кілька функціональних інструментів програмування, які можуть спростити завдання обробки даних. Серед них функції map, filter і reduce. Ці функції дозволяють виконувати операції над колекціями даних у стислій та зрозумілій формі. У цій статті розглядається кожна з цих функцій і наводяться приклади, які допоможуть вам зрозуміти, як їх ефективно використовувати.

Функція map

Функція map застосовує задану функцію до всіх елементів у вхідному списку (або будь-якому ітеруючому) і повертає ітератор, який дає результати. Це особливо корисно для застосування трансформацій до кожного елемента колекції.

Синтаксис

map(function, iterable)

приклад

Припустімо, ви хочете звести в квадрат кожне число в списку. Для цього можна використовувати map:

# Define a function to square a number
def square(x):
    return x * x

# List of numbers
numbers = [1, 2, 3, 4, 5]

# Apply the function to each item in the list
squared_numbers = map(square, numbers)

# Convert the result to a list and print
print(list(squared_numbers))  # Output: [1, 4, 9, 16, 25]

Функція filter

Функція filter використовується для фільтрації елементів із ітерованого на основі функції, яка повертає True або False. У результат включено лише ті елементи, для яких функція повертає True.

Синтаксис

filter(function, iterable)

приклад

Наприклад, якщо ви хочете зберегти лише парні числа зі списку, ви можете використати filter:

# Define a function to check if a number is even
def is_even(x):
    return x % 2 == 0

# List of numbers
numbers = [1, 2, 3, 4, 5]

# Filter the list using the function
even_numbers = filter(is_even, numbers)

# Convert the result to a list and print
print(list(even_numbers))  # Output: [2, 4]

Функція reduce

Функція reduce, яка є частиною модуля functools, кумулятивно застосовує двійкову функцію до елементів ітерованого елемента зліва направо, щоб зменшити ітерований елемент до одного значення.

Синтаксис

from functools import reduce

reduce(function, iterable[, initializer])

приклад

Наприклад, щоб знайти добуток усіх чисел у списку, ви можете використовувати reduce:

from functools import reduce

# Define a function to multiply two numbers
def multiply(x, y):
    return x * y

# List of numbers
numbers = [1, 2, 3, 4, 5]

# Reduce the list using the function
product = reduce(multiply, numbers)

# Print the result
print(product)  # Output: 120

Висновок

Функції map, filter і reduce є потужними інструментами для функціонального програмування на Python. Вони пропонують елегантні рішення для застосування перетворень, фільтрації даних і скорочення колекцій до одного значення. Освоївши ці функції, ви зможете писати більш стислий і виразний код для різноманітних завдань обробки даних.