Модуль 15.5 (Функции высшего порядка) курса «Поколение Python: курс для продвинутых» курс расскажет о:
- Функции высшего порядка
- Самописные функции
map()
,filter()
,reduce()
Публикуем решения на урок 15.5 Функции высшего порядка.
Функция высшего порядка это
функция, которая возвращает в качестве результата работы другую функцию
функция, которая принимает другие функции в качестве аргументов
Как в математике называется функция
reduce()
?
левая свёртка
Какая функция позволяет получить список элементов, преобразованных в соответствии с заданной функцией?
map()
Какая функция позволяет отфильтровать элементы списка с помощью функции-предиката?
filter()
Что выведет приведенный ниже код?
def high_order_function(func):
return func(10)def square(x):
return x**2def minus_one(x):
return x — 1num1 = high_order_function(square)
num2 = high_order_function(minus_one) print(num1*num2)
900
Что выведет приведенный ниже код?
words = [‘abba’, ‘qwerty’, ‘python’, ‘a’, ‘deed’, ‘nun’, ‘level’, ‘deified’, ‘bbbbb’, ‘mother’, ‘surface’, ‘sister’]
words_len = map(len, words) print(max(words_len))Функция
map()
:def map(function, items):
result = []
for item in items:
result.append(function(item))
return result
7
Что выведет приведенный ниже код?
def predicate(word):
return word == word[::-1]words = [‘abba’, ‘qwerty’, ‘python’, ‘a’, ‘deed’, ‘nun’, ‘level’, ‘language’, ‘deified’, ‘bbbbb’, ‘mother’, ‘sister’, ‘surface’, ‘1234321’] filtered = filter(predicate, words) print(len(filtered))
Функция
filter()
:def filter(function, items):
result = []
for item in items:
if function(item):
result.append(item)
return result
8
Что выведет приведенный ниже код?
numbers = [-2, 45, 45, -7, -45, 37, -42, 27, -58, -58, -12, -27, -49, -27, -56, 4, -99, -11, 86]
var1 = max(numbers, key=abs)
var2 = min(map(abs, numbers)) print(var1 + var2)Функция
map()
:def map(function, items):
result = []
for item in items:
result.append(function(item))
return result
-97
Напишите программу, которая с помощью функции
map()
округляет все элементы спискаnumbers
до 22 десятичных знаков, а затем выводит их, каждый на отдельной строке.
def map(function, items):
result = []
for item in items:
result.append(function(item))
return result
numbers = [3.56773, 5.57668, 4.00914, 56.24241, 9.01344, 32.12013, 23.22222, 90.09873, 45.45, 314.1528, 2.71828, 1.41546]
result = map(lambda x: round(x, 2), numbers)
for elem in result:
print(elem)
Напишите программу, которая с помощью функций
filter()
иmap()
отбирает из заданного спискаnumbers
трёхзначные числа, дающие при делении на 55 остаток 22, и выводит их кубы, каждый в отдельной строке.
def map(function, items):
result = []
for item in items:
result.append(function(item))
return result
def filter(function, items):
result = []
for item in items:
if function(item):
result.append(item)
return result
numbers = [1014, 1321, 675, 1215, 56, 1386, 1385, 431, 1058, 486, 1434, 696, 1016, 1084, 424, 1189, 475, 95, 1434, 1462, 815, 776, 657, 1225, 912, 537, 1478, 1176, 544, 488, 668, 944, 207, 266, 1309, 1027, 257, 1374, 1289, 1155, 230, 866, 708, 144, 1434, 1163, 345, 394, 560, 338, 232, 182, 1438, 1127, 928, 1309, 98, 530, 1013, 898, 669, 105, 130, 1363, 947, 72, 1278, 166, 904, 349, 831, 1207, 1496, 370, 725, 926, 175, 959, 1282, 336, 1268, 351, 1439, 186, 273, 1008, 231, 138, 142, 433, 456, 1268, 1018, 1274, 387, 120, 340, 963, 832, 1127]
def tu(a):
return a%5==2 and len(str(a))==3
def coub(x):
return x**3
map(print, map(coub,filter(tu,numbers)))
Напишите программу для вычисления и вывода суммы квадратов элементов списка
numbers
. Решите задачу двумя способами: с помощью функцииreduce()
, и с помощью функцийmap()
иsum()
.
def reduce(operation, items, initial_value):
acc = initial_value
for item in items:
acc = operation(acc, item)
return acc
numbers = [97, 42, 9, 32, 3, 45, 31, 77, -1, 11, -2, 75, 5, 51, 34, 28, 46, 1, -8, 84, 16, 51, 90, 56, 65, 90, 23, 35, 11, -10, 70, 90, 90, 12, 96, 58, -8, -4, 91, 76, 94, 60, 72, 43, 4, -6, -5, 51, 58, 60, 30, 38, 67, 62, 36, 72, 34, 82, 62, -1, 60, 82, 87, 81, -7, 57, 26, 36, 17, 43, 80, 40, 75, 94, 91, 64, 38, 72, 29, 84, 38, 35, 7, 54, 31, 95, 78, 27, 82, 1, 64, 94, 31, 29, -8, 98, 24, 61, 7, 73]
print (sum([pow(elem, 2) for elem in numbers]))
Напишите программу для вычисления и вывода суммы квадратов двузначных чисел, которые делятся на 7 без остатка.
def map(function, items):
result = []
for item in items:
result.append(function(item))
return result
def filter(function, items):
result = []
for item in items:
if function(item):
result.append(item)
return result
numbers = [77, 293, 28, 242, 213, 285, 71, 286, 144, 276, 61, 298, 280, 214, 156, 227, 228, 51, -4, 202, 58, 99, 270, 219, 94, 253, 53, 235, 9, 158, 49, 183, 166, 205, 183, 266, 180, 6, 279, 200, 208, 231, 178, 201, 260, -35, 152, 115, 79, 284, 181, 92, 286, 98, 271, 259, 258, 196, -8, 43, 2, 128, 143, 43, 297, 229, 60, 254, -9, 5, 187, 220, -8, 111, 285, 5, 263, 187, 192, -9, 268, -9, 23, 71, 135, 7, -161, 65, 135, 29, 148, 242, 33, 35, 211, 5, 161, 46, 159, 23, 169, 23, 172, 184, -7, 228, 129, 274, 73, 197, 272, 54, 278, 26, 280, 13, 171, 2, 79, -2, 183, 10, 236, 276, 4, 29, -10, 41, 269, 94, 279, 129, 39, 92, -63, 263, 219, 57, 18, 236, 291, 234, 10, 250, 0, 64, 172, 216, 30, 15, 229, 205, 123, -105]
print (sum([pow(elem, 2) for elem in numbers if abs(elem)//100 == 0 and abs(elem)//10 > 0 and elem%7==0]))
Напишите функцию
func_apply()
, принимающую на вход функцию и список значений и возвращающую список, в котором каждое значение будет результатом применения переданной функции к переданному списку.
def func_apply(func, arr):
return [func(item) for item in arr]
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы
а будут ответы на 15.6
Да, на следующей недели планирую продолжить
Добавил все ответы на 15 модуль