Лямбда-функції Python анонімні функції означає, що функція не має назви. Як ми вже знаємо зах Ключове слово використовується для визначення звичайної функції в Python. Аналогічно, лямбда Ключове слово використовується для визначення анонімної функції в Python .
Синтаксис лямбда-функції Python
Синтаксис: лямбда-аргументи: вираз
- Ця функція може мати будь-яку кількість аргументів, але лише один вираз, який обчислюється та повертається.
- Можна вільно використовувати лямбда-функції скрізь, де потрібні функціональні об’єкти.
- Ви повинні знати, що лямбда-функції синтаксично обмежені одним виразом.
- Крім інших типів виразів у функціях, він має різноманітне застосування в окремих галузях програмування.
Приклад лямбда-функції Python
У прикладі ми визначили лямбда-функцію ( верхній ), щоб перетворити рядок у верхній регістр за допомогою верхній() .
Цей код визначає лямбда-функцію з назвою upper>
який приймає рядок як аргумент і перетворює його на верхній регістр за допомогою upper()>
метод. Потім він застосовує цю лямбда-функцію до рядка «techcodeview.com» і друкує результат
Python3
str1> => 'techcodeview.com'> upper> => lambda> string: string.upper()> print> (upper(str1))> |
>
>
Вихід:
GEEKSFORGEEKS>
Використання функції лямбда в Python
Давайте подивимося на практичне використання лямбда-функції Python.
Перевірка стану за допомогою лямбда-функції Python
Ось, 'format_numric' викликає лямбда-функцію, а num передається як параметр для виконання операцій.
Python3
format_numeric> => lambda> num: f> '{num:e}'> if> isinstance> (num,> int> )> else> f> '{num:,.2f}'> print> (> 'Int formatting:'> , format_numeric(> 1000000> ))> print> (> 'float formatting:'> , format_numeric(> 999999.789541235> ))> |
>
>
Вихід:
Int formatting: 1.000000e+06 float formatting: 999,999.79>
Різниця між лямбда-функціями та визначеною функцією
Код визначає функцію куба, використовуючи як ' def'>
ключове слово та лямбда-функція. Він обчислює куб заданого числа (у цьому випадку 5), використовуючи обидва підходи, і друкує результати. Вихід 125 для обох ' def'>
і лямбда-функції, демонструючи, що вони досягають того самого обчислення куба.
Python3
def> cube(y):> > return> y> *> y> *> y> lambda_cube> => lambda> y: y> *> y> *> y> print> (> 'Using function defined with `def` keyword, cube:'> , cube(> 5> ))> print> (> 'Using lambda function, cube:'> , lambda_cube(> 5> ))> |
>
>
Вихід:
Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125>
Як ми бачимо в наведеному вище прикладі, обидва куб() функція і lambda_cube() функція веде себе однаково та за призначенням. Давайте проаналізуємо приклад вище:
З функцією лямбда | Без функції лямбда |
---|---|
Іноді підтримує однорядкові оператори, які повертають певне значення. | Підтримує будь-яку кількість рядків у функціональному блоці |
Добре підходить для виконання коротких операцій/маніпулювання даними. | Добре підходить для будь-яких випадків, коли потрібно кілька рядків коду. |
Використання лямбда-функції іноді може зменшити читабельність коду. | Ми можемо використовувати коментарі та описи функцій для зручності читання. |
Практичне використання лямбда-функції Python
Лямбда-функція Python із розумінням списку
На кожній ітерації всередині розуміння списку , ми створюємо нову лямбда-функцію з аргументом за замовчуванням x (де x — поточний елемент ітерації). Пізніше, всередині циклу for, ми викликаємо той самий об’єкт функції, який використовує аргумент за замовчуванням пункт() і отримати потрібне значення. Таким чином, is_even_list зберігає список об'єктів лямбда-функції.
Python3
is_even_list> => [> lambda> arg> => x: arg> *> 10> for> x> in> range> (> 1> ,> 5> )]> for> item> in> is_even_list:> > print> (item())> |
>
>
Вихід:
10 20 30 40>
Лямбда-функція Python із if-else
Тут ми використовуємо Макс лямбда-функція для знаходження максимуму з двох цілих чисел.
Python3
Max> => lambda> a, b : a> if> (a>б)> else> b> print> (> Max> (> 1> ,> 2> ))> |
>
>
Вихід:
2>
Python Lambda з кількома операторами
Лямбда-функції не дозволяють використовувати кілька операторів, однак ми можемо створити дві лямбда-функції, а потім викликати іншу лямбда-функцію як параметр першої функції. Давайте спробуємо знайти другий максимальний елемент за допомогою лямбда.
Код визначає список підсписків, викликаних ' List'>
. Він використовує лямбда-функції для сортування кожного підсписку та пошуку другого за величиною елемента в кожному підсписку. Результатом є список других за величиною елементів, який потім друкується. Результат відображає другий за величиною елемент із кожного підсписку у вихідному списку.
Python3
List> => [[> 2> ,> 3> ,> 4> ],[> 1> ,> 4> ,> 16> ,> 64> ],[> 3> ,> 6> ,> 9> ,> 12> ]]> sortList> => lambda> x: (> sorted> (i)> for> i> in> x)> secondLargest> => lambda> x, f : [y[> len> (y)> -> 2> ]> for> y> in> f(x)]> res> => secondLargest(> List> , sortList)> print> (res)> |
>
>
Вихід:
[3, 16, 9]>
Лямбда-функції можна використовувати разом із вбудованими функціями, такими як фільтр() , map() і зменшити() .
Використання функції lambda() із filter()
Функція filter() у Python приймає функцію та список як аргументи. Це пропонує елегантний спосіб відфільтрувати всі елементи послідовності послідовності, для яких функція повертає True. Ось невелика програма, яка повертає непарні числа зі списку введення:
Відфільтруйте всі непарні числа за допомогою filter() і лямбда-функції
Тут лямбда x: (x % 2 != 0) повертає True або False, якщо x не є парним. Оскільки filter() зберігає елементи лише там, де він створює правда , таким чином він видаляє всі згенеровані непарні числа помилковий .
Python3
li> => [> 5> ,> 7> ,> 22> ,> 97> ,> 54> ,> 62> ,> 77> ,> 23> ,> 73> ,> 61> ]> final_list> => list> (> filter> (> lambda> x: (x> %> 2> !> => 0> ), li))> print> (final_list)> |
>
>
Вихід:
[5, 7, 97, 77, 23, 73, 61]>
Відфільтрувати всіх людей старше 18 років за допомогою функції лямбда та filter().
Код фільтрує список вікових груп і витягує вік дорослих (вік старше 18) за допомогою лямбда-функції та ' filter'>
функція. Потім він друкує список дорослих віків. Вихідні дані показують вік осіб, яким 18 років і старше.
Python3
ages> => [> 13> ,> 90> ,> 17> ,> 59> ,> 21> ,> 60> ,> 5> ]> adults> => list> (> filter> (> lambda> age: age>> 18> , ages))> print> (adults)> |
приклади програм на python
>
>
Вихід:
[90, 59, 21, 60]>
Використання функції lambda() із map()
Функція map() у Python приймає функцію та список як аргумент. Функція викликається за допомогою лямбда-функції та списку, і повертається новий список, який містить усі лямбда-модифіковані елементи, повернуті цією функцією для кожного елемента. приклад:
Помножте всі елементи списку на 2 за допомогою функції лямбда та map().
Код подвоює кожен елемент у списку за допомогою лямбда-функції та ' map'>
функція. Потім він друкує новий список із подвоєними елементами. Вихід відображає кожен елемент із вихідного списку, помножений на 2.
Python3
li> => [> 5> ,> 7> ,> 22> ,> 97> ,> 54> ,> 62> ,> 77> ,> 23> ,> 73> ,> 61> ]> final_list> => list> (> map> (> lambda> x: x> *> 2> , li))> print> (final_list)> |
>
>
Вихід:
[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]>
Перетворіть усі елементи списку у верхній регістр за допомогою лямбда-виразу та функції map().
Код перетворює список назв тварин у верхній регістр за допомогою лямбда-функції та ' map'>
функція. Потім він друкує список із назвами тварин у верхньому регістрі. Назви тварин відображаються великими літерами.
Python3
animals> => [> 'dog'> ,> 'cat'> ,> 'parrot'> ,> 'rabbit'> ]> uppered_animals> => list> (> map> (> lambda> animal: animal.upper(), animals))> print> (uppered_animals)> |
>
>
Вихід:
['DOG', 'CAT', 'PARROT', 'RABBIT']>
Використання функції lambda() із reduce()
The зменшити() функція в Python приймає функцію та список як аргумент. Функція викликається за допомогою лямбда-функції, і повертається ітерований і новий зменшений результат. Це виконує повторювану операцію над парами iterable. Функція reduce() належить до functools модуль.
Сума всіх елементів у списку за допомогою лямбда-виразу та функції reduce().
Код обчислює суму елементів у списку за допомогою ' reduce'>
функція від ' functools'>
модуль. Це імпорт ' reduce'>
, визначає список, застосовує лямбда-функцію, яка додає два елементи одночасно, і друкує суму всіх елементів у списку. На виході відображається обчислена сума.
Python3
from> functools> import> reduce> li> => [> 5> ,> 8> ,> 10> ,> 20> ,> 50> ,> 100> ]> sum> => reduce> ((> lambda> x, y: x> +> y), li)> print> (> sum> )> |
>
>
Вихід:
193>
Тут результати попередніх двох елементів додаються до наступного елемента, і це продовжується до кінця списку, наприклад (((((5+8)+10)+20)+50)+100).
Знайдіть максимальний елемент у списку за допомогою лямбда-визначення та функції reduce().
Код використовує ' functools'>
модуль для пошуку максимального елемента в списку ( ' lis'>
) за допомогою ' reduce'>
функція та лямбда-функція. Потім він друкує максимальний елемент, який у цьому випадку становить 6.
Python3
import> functools> lis> => [> 1> ,> 3> ,> 5> ,> 6> ,> 2> , ]> print> (> 'The maximum element of the list is : '> , end> => '')> print> (functools.> reduce> (> lambda> a, b: a> if> a>b> else> b, lis))> |
>
>
Вихід:
The maximum element of the list is : 6>