Ръководство за начинаещи за разбиране на ламбда функциите на Python

Ръководство за начинаещи за разбиране на ламбда функциите на Python

Ламбдите в Python са една от най -полезните, важни и интересни функции, за които трябва да знаете. За съжаление те също са лесни за разбиране и грешка.





В тази статия ще обясним всичко, което трябва да знаете за тези мистериозни функции, как да ги използвате и защо са полезни.





Преди да се потопите в тези практически примери, може да искате да настроите виртуална среда на Python. Ако дори не искате да направите това, тогава трябва поне да опитате тези примери с интерактивна черупка на Python онлайн .





Какво е ламбда в Python?

Ламбда е просто начин за дефиниране на функция в Python. Те понякога са известни като „ламбда оператори“ или „ламбда функции“.

Ако преди сте използвали Python, вероятно сте дефинирали функциите си с помощта на def ключова дума и досега работи добре за вас. Така че защо има друг начин да направите същото?



Разликата е, че ламбда функциите са анонимни. Това означава, че те са функции, които не е необходимо да се назовават. Те се използват за създаване на малки, еднократни функции в случаите, когато „реална“ функция би била твърде голяма и обемиста.

Ламбдите връщат функционален обект, който може да бъде присвоен на променлива. Ламбдите могат да имат произволен брой аргументи, но могат да имат само един израз. Не можете да извиквате други функции в ламбдите.





Най-честото използване на ламбда функции е в код, който изисква проста едноредова функция, където би било прекалено много да се напише пълна нормална функция. Това е разгледано по -подробно по -долу, под „Какво ще кажете за карта, филтриране и намаляване?“.

Как да използвате Lambdas в Python

Преди да разгледаме ламбда функция, нека разгледаме супер основна функция, дефинирана по „традиционния“ начин:





def add_five(number):
return number + 5

print(add_five(number=4))

Тази функция е много основна, но служи за илюстриране на ламбди. Вашето може да е по -сложно от това. Тази функция добавя пет към всяко число, предадено й през номер параметър.

Ето как изглежда като ламбда функция:

add_five = lambda number: number + 5

print(add_five(number=4))

Вместо да използва def , думата ламбда се използва. Не се изискват скоби, но всякакви думи след ламбда ключовата дума се създава като параметри. Двоеточие се използва за разделяне на параметрите и израза. В този случай изразът е номер + 5 .

Няма нужда да използвате връщане ключова дума --- ламбдата прави това вместо вас автоматично.

Ето как бихте създали ламбда функция с два аргумента:

какво да правя със старата wii конзола
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Ако все още не сте сигурни относно точката на ламбдите, следващият раздел ще се потопи и ще ви помогне да видите светлината.

Python Lambdas с карта, филтриране и намаляване

Основната библиотека на Python има три метода, наречени карта , намалете , и филтър . Тези методи вероятно са най -добрите причини за използване на ламбда функции.

The карта функция очаква два аргумента: функция и списък. Той приема тази функция и я прилага към всеки елемент в списъка, връщайки списъка с модифицирани елементи като обект на карта. The списък функцията се използва за преобразуване на получения обект на картата отново в списък.

Ето как да използвате карта без ламбда:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Тази функция на картата е доста удобна, но може да бъде по -добра. на add_five функцията се предава като аргумент, но какво, ако не искате да създавате функция всеки път, когато използвате map? Можете да използвате ламбда вместо това!

Ето как изглежда същия код, само с функцията, заменена с ламбда:

как да съживите изтощена батерия на лаптоп
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Както можете да видите, целият add_five функцията вече не се изисква. Вместо това, ламбда функцията се използва, за да поддържа нещата спретнати.

С филтър функция, процесът е почти същият. Филтър приема функция и я прилага към всеки елемент в списък и създава нов списък само с елементите, които са причинили функцията да върне True.

Първо, без ламбди:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Няма нищо лошо в този код, но става малко дълъг. Нека да видим колко редове може да премахне ламбда:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

Ламбда функцията е заменила необходимостта от цялото по -голямо_от_те_функция ! И това е направено с пет прости думи. Ето защо ламбдите са мощни: намаляват бъркотията за прости задачи.

И накрая, нека разгледаме намалете . Намаляването е друга готина функция на Python. Той прилага текущо изчисление за всички елементи в списъка. Можете да използвате това, за да изчислите обща сума или да умножите всички числа заедно:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Този пример трябва да се импортира намалете от функционални инструменти модул, но не се притеснявайте, модулът functools е част от основната библиотека на Python.

Историята е много същата с ламбда, няма нужда от функция:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Неща, на които трябва да внимавате с Python Lambdas

Тези примери показват колко лесни са ламбда функциите, заедно с карта, филтриране и намаляване от основната библиотека на Python. Все пак има няколко приложения, при които ламбда функциите не помагат.

Ако правите нещо повече от основна задача или искате да извикате други методи, използвайте нормална функция. Ламбдите са чудесни за еднократни анонимни функции, но те трябва да имат само един израз. Ако вашата ламбда започне да изглежда като регулярен израз, вероятно е време да преработите към специален метод.

За още съвети проверете нашите ръководство за обектно-ориентирано програмиране в Python и вижте нашето ръководство за често задавани въпроси за начинаещи на Python.

Дял Дял Туит електронна поща 3 начина да проверите дали имейл е реален или фалшив

Ако сте получили имейл, който изглежда малко съмнителен, винаги е най -добре да проверите неговата автентичност. Ето три начина да разберете дали имейл е реален.

Прочетете Напред
Свързани теми
  • Програмиране
  • Python
  • Уроци по кодиране
За автора Джо Кобърн(136 статии са публикувани)

Джо е завършил компютърни науки от университета в Линкълн, Великобритания. Той е професионален разработчик на софтуер и когато не лети с дронове или пише музика, често може да бъде намерен да прави снимки или да произвежда видеоклипове.

Още от Джо Кобърн

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате