Класичні функції вищого порядка
Розглянемо класичні функції вищого порядка, які приймають послідовність і функцію.
map()
Застосовує вказану функцію до кожного елемента послідовності. Повертає ітератор.
Приклад. Є символьний рядок, у якому числа розділено пробілами. Треба отримати список цих чисел:
>>> string = '2 4 8 15 42'
>>> numbers = map(int, string.split())
>>> list(numbers)
[2, 4, 8, 15, 42]
>>>
Функції map()
ми передали функцію int
і список з символьних рядків,
до елементів якого і було застосовано цю функцію.
filter()
Залишає лише ті елементи послідовності, для яких задана функція повертає істинне значення. Повертає ітератор.
Приклад. "Відфільтруємо" список цілих чисел і залишимо лише ті, які більше нуля:
>>> numbers = [3, 2, -1, 0, 15, -8, -7, 3, -3, 8]
>>> positive_numbers = filter(lambda x: x > 0, numbers)
>>> list(positive_numbers)
[3, 2, 15, 3, 8]
>>>
Функції filter()
ми передали анонімну функцію і список.