Генераторы словарей и модули Рython
Функции в языке Python Функции в языке PythonВсе функции в языке Python возвращают какое-либо значение, хотя вполне возможно (и часто так и делается) просто игнорировать это значение. Возвращаемое значение может быть единственным значением или кортежем значений,...
Реализация генераторов Реализация генераторовМы рассмотрели коллекции-последовательности, tuple, collections, na-medtuple и list, поддерживающие, как и строки, возможность извлечения срезов. Также было рассмотрено использование оператора распаковывания...
Парсинг документов XML Парсинг документов XMLXML: Для парсинга документов XML широко используются два основных подхода. Один из них основан на анализе DOM (Document Object Model -объектная модель документа), а другой - на использовании SAX (Simple API for XML - упрощенный...
Копирование коллекций Копирование коллекцийКопирование коллекций: Поскольку в языке Python повсюду используются ссылки на объекты, когда выполняется оператор присваивания (=), никакого копирования данных на самом деле не происходит. Если справа от оператора находится литерал,...
Лямбда функции
Лямбда-функции: Выражение expression не может содержать условных инструкций или циклов (хотя условные выражения являются допустимыми), а также не может содержать инструкцию return (или yield). Результатом лямбда-выражения является анонимная функция.

Когда вызывается лямбда-функция, она возвращает результат вычисления выражения expression. Если выражение expression представляет собой кортеж, оно должно быть заключено в круглые скобки. Лямбда-выражение возвращает анонимную функцию, которая присваивается переменной s.

Любая (вызываемая) переменная может вызываться как функция при помощи круглых скобок, поэтому после выполнения некоторой операции можно при помощи функции s вывести сообщение с числом обработанных файлов, например: print(" file processed".format(count, s(count)). Лямбдафункции часто используются в виде аргумента key встроенной функции sorted или метода list.sort . Предположим, что имеется список, элементами которого являются трехэлементные кортежи (номер группы, порядковый номер, название), и нам необходимо отсортировать этот список различными способами.

Ниже приводится пример такого списка: elements = [(2, 12, "Ид"), (1, 11, "Na"), (1, 3, "Li"), (2, 4, "Be")] Отсортировав список, мы получим следующий результат: [(1, 3, 'Li"), (1, 11, 'Na'), (2, 4, "Be"), (2, 12, 'Mg")] Ранее, когда мы рассматривали функцию sorted , то видели, что имеется возможность изменить порядок сортировки, если в аргументе key передать требуемую функцию. Например, если необходимо отсортировать список не по естественному порядку: номер группы, порядковый номер и название, а по порядковому номеру и названию, то мы могли бы написать маленькую функциюс!ет" ignoreO(e): return e[1], e[2] и передавать ее в аргументе key.

Здесь в качестве значения аргумента key используется выражение lambda e: (е[1], е[2]), которому в виде аргумента е последовательно передаются все трехэлементные кортежи из списка. Круглые скобки, окружающие лямбда-выражение, обязательны, когда выражение является кортежем и лямбда-функция создается как аргумент другой функции. Мы можем вызвать функцию агеа(6, 5) независимо от того, была ли она создана как лямбда-функция или с помощью инструкции def, и результат будет один и тот же.

Другая замечательная область применения лямбда-функций - создание словарей со значениями по умолчанию. При обращении к словарю minus_one_dict с несуществующим ключом будет создан новый элемент с указанным ключом и со значением -1. Точно так же при обращении к словарю point_zero_dict вновь созданный элемент получит в качестве значения кортеж (0, 0), а при обращении к словарю message_dict значением по умолчанию будет строка "No message available".
Навигация: 1 2 3
 
 
© Copyright