Анонимные функции. Часть 1
Работа с анонимными функциями
Именем какой греческой буквы названо ключевое слово «Python», объявляющее анонимную функцию?
Ответ: лямбда
Нужно ли заключать параметры анонимных функций в скобки?
Ответ: нет
Анонимная функция – это функция:
Ответ: у которой есть тело, но нет имени
Анонимные функции в «Python»:
Ответ:
- состоят из одного выражения (возможно, составного);
- в виде объявления сами являются выражениями;
- являются замыканиями (могут замыкать переменные из внешнего контекста);
- могут иметь *args и **kwargs
Выберите правильный вариант написания лямбда-выражения для функции f(x)=2x+1
Ответ: f = lambda x: 2*x + 1
Что будет напечатано в результате работы программы?:
func = lambda x, y: x ** y print(func(5, 3))
Ответ: 125
Что будет напечатано в результате работы программы?:
func = lambda x, y: x + y print(func('5', '3'))
Ответ: 53
Что будет напечатано в результате работы программы?:
funcs = [lambda x: x ** 0.5, lambda x: x ** 2, lambda x: x ** 3] print(funcs[1](9))
Ответ: 81
Что будет напечатано в результате работы программы?:
users = [('Timur', 28), ('Ruslan', 21), ('Roman', 30), ('Soltan', 24), ('Robert', 1)] result = max(users, key=lambda x: x[1]) print(result)
Ответ: ('Roman', 30)
Что будет напечатано в результате работы программы?:
from functools import reduce numbers = range(10) obj = map(lambda x: x + 1, numbers) obj = filter(lambda x: x % 2 == 1, obj) result = reduce(lambda x, y: x + y, obj, 0) print(result)
Ответ: 25
Что будет напечатано в результате работы программы?:
result = list(map(lambda x: x.split(), ['a', 'a b', 'a b c'])) print(result)
Ответ: [['a'], ['a', 'b'], ['a', 'b', 'c']]
Что будет напечатано в результате работы программы?:
high_ord_func = lambda x, func: x + func(x) result = high_ord_func(2, lambda x: x * x) + high_ord_func(5, lambda x: x + 3) print(result)
Ответ: 19
Что будет напечатано в результате работы программы?:
dict1 = {'x': 1} dict2 = {'y': 2} dict3 = {'x': 3, 'y': 4} result = list(filter(lambda d: 'x' in d.keys(), [dict1, dict2, dict3])) print(result)
Ответ: [{'x': 1}, {'x': 3, 'y': 4}]
Требовалось написать программу, которая:
- преобразует список floats в список чисел, возведенных в квадрат и округленных с точностью до одного десятичного знака;
- фильтрует список words и оставляет только палиндромы длиной более 4 символов;
- находит произведение чисел из списка numbers.
Программист торопился и написал программу неправильно. Доработайте его программу.
from functools import reduce floats = [4.35, 6.09, 3.25, 9.77, 2.16, 8.88, 4.59, 34.23, 12.12, 4.67, 2.45, 9.32] words = ['racecar', 'akinremi', 'deed', 'temidayo', 'omoseun', 'civic', 'TATTARRATTAT', 'malayalam', 'nun'] numbers = [4, 6, 9, 23, 5] # Исправьте этот код map_result = list(map(lambda num: round(num**2, 1), floats)) filter_result = list(filter(lambda name:len(name) > 4 and name == name[::-1], words)) reduce_result = reduce(lambda num1, num2: num1 * num2, numbers, 1) print(map_result) print(filter_result) print(reduce_result)
Напишите программу, которая с помощью встроенных функций filter(), map(), sorted() и reduce() выводит в алфавитном порядке список primary городов с населением более 10 000 000 человек, в формате: Cities: Beijing, Buenos Aires, ...
from functools import reduce data = [['Tokyo', 35676000, 'primary'], ['New York', 19354922, 'nan'], ['Mexico City', 19028000, 'primary'], ['Mumbai', 18978000, 'admin'], ['Sao Paulo', 18845000, 'admin'], ['Delhi', 15926000, 'admin'], ['Shanghai', 14987000, 'admin'], ['Kolkata', 14787000, 'admin'], ['Los Angeles', 12815475, 'nan'], ['Dhaka', 12797394, 'primary'], ['Buenos Aires', 12795000, 'primary'], ['Karachi', 12130000, 'admin'], ['Cairo', 11893000, 'primary'], ['Rio de Janeiro', 11748000, 'admin'], ['Osaka', 11294000, 'admin'], ['Beijing', 11106000, 'primary'], ['Manila', 11100000, 'primary'], ['Moscow', 10452000, 'primary'], ['Istanbul', 10061000, 'admin'], ['Paris', 9904000, 'primary']] w = list(filter(lambda x: x[1] > 10000000 and x[2] == 'primary', data)) a = list(map(lambda x: x[0], w)) a = list(sorted(a)) b = reduce(lambda x, y: x + ' ' + y + ',', a, 'Cities:') print(b[:-1])