Решение модуля 15.7 Поколение Python: для продвинутых

Модуль 15.7 (Анонимные функции. Часть 1) курса «Поколение Python: курс для продвинутых» курс расскажет о:

  • Определение анонимных функций
  • Условный оператор в теле анонимной функции
  • Передача аргументов в анонимную функцию
  • Ограничения анонимных функций

Публикуем решения на урок 15.7 Анонимные функции. Часть 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  и оставляет только палиндромы длиной более 44 символов;

— находит произведение чисел из списка 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(pow(num, 2), 1), floats))
filter_result = list(filter(lambda name: name == name[::-1] and len(name) > 4, 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']]

lst = filter(lambda x: x if "primary" in x and x[1] > 10000000  else False,data)
new_data = sorted(map(lambda x: x[0], lst))

print("Cities:", reduce(lambda x,y: x + ", " + y, new_data))

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector