H. Длинная сортировка

Напишите lambda выражение для сортировки списка слов сначала по длине, а затем по алфавиту без учёта регистра.

Примечание

В решении не должно быть ничего, кроме выражения.

Пример

Ввод

string = 'мама мыла раму'
print(sorted(string.split(), key=<ваше выражение>))

Вывод

['мама', 'мыла', 'раму']

Ввод

string = 'Яндекс использует Python во многих проектах'
print(sorted(string.split(), key=<ваше выражение>))

Вывод

['во', 'Python', 'многих', 'Яндекс', 'проектах', 'использует']

Решение

Самый простой способ научиться писать lambda функции – написать сначала функцию обычным способом, а потом попробовать ее “свернуть”.

Если бы нам потребовалось реализовать этот поиск с помощью простой функции, то мы бы сначала отсортировали слова по длина, а потом, при равенстве длины, отсортировали бы слова по алфавиту.

В случае, когда сортировку делаем не мы, а функция sorted(), мы должны подготовить функцию, которая возвращала бы кортеж данных. Именно по этому кортежу функция sorted() может понять “вес” каждого слова. Ведь сортировка кортежа осуществляется как раз по описанному выше требованию – сначала список кортежей сортируется по первому значению, потом, в случае совпадения первого – по второму.

Итак, код мог бы выглядеть так:

Python
def crt(word):
    return len(word), word.lower()

Остается свернуть его в лямбда-функцию:

Посмотреть код

Решение

Python
lambda x: (len(x), x.lower())
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии