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

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

Публикуем решения на урок 15.8 Анонимные функции. Часть 2.

Что будет выведено на экран в результате выполнения следующей программы?

numbers = [1, 2, 5, 3, 4]
numbers.sort(key=lambda x: -x)
print(numbers)

[5, 4, 3, 2, 1]

Что будет выведено на экран в результате выполнения следующей программы?

primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
result = list(filter(lambda: True, primes))
print(result)

произойдет ошибка

Что будет выведено на экран в результате выполнения следующей программы?

primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
result = list(filter(lambda x: True, primes))
print(result)


[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

Что будет выведено на экран в результате выполнения следующей программы?

full_name = lambda first, last: f’Full name: {first.title()} {last.title()}’
print(full_name(‘ben’, ‘affleck’))


Full name: Ben Affleck

Напишите функцию func, используя синтаксис анонимных функций, которая принимает целочисленный аргумент и возвращает значение True, если он делится без остатка на 19 или на 13 и False в противном случае.

func =lambda n: n%19==0 or n%13==0

Напишите функцию func, используя синтаксис анонимных функций, которая принимает строковый аргумент и возвращает значение True, если переданный аргумент начинается и заканчивается на английскую букву a (регистр буквы неважен) и False в противном случае.

func = lambda x: x[0].lower() == "a" == x[-1].lower()

Напишите функцию is_non_negative_num, используя синтаксис анонимных функций, которая принимает строковый аргумент и возвращает значение True, если переданный аргумент является неотрицательным числом (целым или вещественным) и False в противном случае.

is_non_negative_num = lambda x: set(x.replace('.', '', 1)) <= set('0123456789')

Напишите функцию is_num, используя синтаксис анонимных функций, которая принимает строковый аргумент и возвращает значение True, если переданный аргумент является числом (целым или вещественным) и False в противном случае.

is_num = lambda x: "-" not in x[1:] and x.replace('.', '', 1).replace("-",'').isdigit()

Напишите программу, которая с помощью встроенных функций filter() и sorted() выводит слова из списка words, имеющие длину ровно 66 символов. Слова следует вывести в алфавитном порядке на одной строке, разделив символом пробела.

words = ['beverage', 'monday', 'abroad', 'bias', 'abuse', 'abolish', 'abuse', 'abuse', 'bid', 'wednesday', 'able', 'betray', 'accident', 'abduct', 'bigot', 'bet', 'abandon', 'besides', 'access', 'friday', 'bestow', 'abound', 'absent', 'beware', 'abundant', 'abnormal', 'aboard', 'about', 'accelerate', 'abort', 'thursday', 'tuesday', 'sunday', 'berth', 'beyond', 'benevolent', 'abate', 'abide', 'bicycle', 'beside', 'accept', 'berry', 'bewilder', 'abrupt', 'saturday', 'accessory', 'absorb']

print(*sorted(filter(lambda x: len(x) == 6, words)))

Напишите программу, которая с помощью встроенных функций map() и filter() удаляет из списка numbers все нечетные элементы, большие 47, а все четные элементы нацело делит на два (целочисленное деление – //). Полученные числа следует вывести на одной строке, разделив символом пробела и сохранив исходный порядок.

nums = [46, 61, 34, 17, 56, 26, 93, 1, 3, 82, 71, 37, 80, 27, 77, 94, 34, 100, 36, 81, 33, 81, 66, 83, 41, 80, 80, 93, 40, 34, 32, 16, 5, 16, 40, 93, 36, 65, 8, 19, 8, 75, 66, 21, 72, 32, 41, 59, 35, 64, 49, 78, 83, 27, 57, 53, 43, 35, 48, 17, 19, 40, 90, 57, 77, 56, 80, 95, 90, 27, 26, 6, 4, 23, 52, 39, 63, 74, 15, 66, 29, 88, 94, 37, 44, 2, 38, 36, 32, 49, 5, 33, 60, 94, 89, 8, 36, 94, 46, 33]

res = list(map(lambda x: x//2 if x%2==0 else x, filter(lambda x: x%2==0 or (x%2!=0 and x<47), nums)))
print(*res)

Список data содержит информацию о численности населения некоторых штатов США. Напишите программу сортировки по убыванию списка data на основании последнего символа в названии штата. Затем распечатайте элементы этого списка, каждый на новой строке в формате:

<название штата>: <численность населения>

Vermont: 626299
Massachusetts: 7029917

data = [(19542209, 'New York'), (4887871, 'Alabama'), (1420491, 'Hawaii'), (626299, 'Vermont'), (1805832, 'West Virginia'), (39865590, 'California'), (11799448, 'Ohio'), (10711908, 'Georgia'), (10077331, 'Michigan'), (10439388, 'Virginia'), (7705281, 'Washington'), (7151502, 'Arizona'), (7029917, 'Massachusetts'), (6910840, 'Tennessee')]

for i in sorted(data, key=lambda x: x[1][-1], reverse=True):
    print(f"{i[1]}: {i[0]}")

Список data содержит слова на русском языке. Напишите программу его сортировки по возрастанию длины слов, а затем в лексикографическом порядке. Отсортированные слова следует вывести на одной строке, разделив символом пробела.

data = ['год', 'человек', 'время', 'дело', 'жизнь', 'день', 'рука', 'раз', 'работа', 'слово', 'место', 'лицо', 'друг', 'глаз', 'вопрос', 'дом', 'сторона', 'страна', 'мир', 'случай', 'голова', 'ребенок', 'сила', 'конец', 'вид', 'система', 'часть', 'город', 'отношение', 'женщина', 'деньги']

print(*sorted(data, key=lambda x: (len(x), x)))

Список mixed_list содержит целочисленные и строковые значения. Напишите программу, которая с помощью встроенной функции max() находит и выводит наибольшее числовое значение в указанном списке.

mixed_list = ['tuesday', 'abroad', 'abuse', 'beside', 'monday', 'abate', 'accessory', 'absorb', 1384878, 'sunday', 'about', 454805, 'saturday', 'abort', 2121919, 2552839, 977970, 1772933, 1564063, 'abduct', 901271, 2680434, 'bicycle', 'accelerate', 1109147, 942908, 'berry', 433507, 'bias', 'bestow', 1875665, 'besides', 'bewilder', 1586517, 375290, 1503450, 2713047, 'abnormal', 2286106, 242192, 701049, 2866491, 'benevolent', 'bigot', 'abuse', 'abrupt', 343772, 'able', 2135748, 690280, 686008, 'beyond', 2415643, 'aboard', 'bet', 859105, 'accident', 2223166, 894187, 146564, 1251748, 2851543, 1619426, 2263113, 1618068, 'berth', 'abolish', 'beware', 2618492, 1555062, 'access', 'absent', 'abundant', 2950603, 'betray', 'beverage', 'abide', 'abandon', 2284251, 'wednesday', 2709698, 'thursday', 810387, 'friday', 2576799, 2213552, 1599022, 'accept', 'abuse', 'abound', 1352953, 'bid', 1805326, 1499197, 2241159, 605320, 2347441]

print(max(mixed_list, key=lambda x: x if isinstance(x,int) else 0))

Список mixed_list содержит целочисленные и строковые значения. Напишите программу его сортировки по неубыванию значений элементов, при этом числа должны следовать до строк.  Элементы отсортированного списка выведите на одной строке, разделив символом пробела.

mixed_list = ['beside', 48, 'accelerate', 28, 'beware', 'absorb', 'besides', 'berry', 15, 65, 'abate', 'thursday', 76, 70, 94, 35, 36, 'berth', 41, 'abnormal', 'bicycle', 'bid', 'sunday', 'saturday', 87, 'bigot', 41, 'abort', 13, 60, 'friday', 26, 13, 'accident', 'access', 40, 26, 20, 75, 13, 40, 67, 12, 'abuse', 78, 10, 80, 'accessory', 20, 'bewilder', 'benevolent', 'bet', 64, 38, 65, 51, 95, 'abduct', 37, 98, 99, 14, 'abandon', 'accept', 46, 'abide', 'beyond', 19, 'about', 76, 26, 'abound', 12, 95, 'wednesday', 'abundant', 'abrupt', 'aboard', 50, 89, 'tuesday', 66, 'bestow', 'absent', 76, 46, 'betray', 47, 'able', 11]

print(*sorted(mixed_list, key=lambda x: str(x) ))

В цветовой схеме RGB цвета задаются с помощью трех компонентов:

R — интенсивность красной составляющей цвета;
G — интенсивность зеленой составляющей цвета;
B — интенсивность синей составляющей цвета.

Противоположные цвета задаются как RGB и (255-R)(255-G)(255-B). Считается, что такие цвета хорошо гармонируют друг с другом.

Напишите программу, которая по трем компонентам заданного цвета, находит компоненты противоположного цвета. 

print(*list(map(lambda x: 255 - x, [int(i) for i in input().split()])))

На вход программе на первой строке подаются коэффициенты многочлена, разделенные символом пробела и целое число xx на второй строке. Напишите программу, которая вычисляет значение указанного многочлена при заданном значении x.

from functools import reduce as r

eval = lambda coef, x: r(lambda v, c: c + v * x, map(int, coef))
print(eval(input().split(), int(input())))

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

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

Adblock
detector