Водич за почетнике у разумевању Питхон ламбда функција

Водич за почетнике у разумевању Питхон ламбда функција

Ламбде у Питхону једна су од најкориснијих, најважнијих и најзанимљивијих функција о којима треба знати. Нажалост, лако их је и погрешно разумети и погрешити.





У овом чланку ћемо објаснити све што требате знати о овим мистериозним функцијама, како их користити и зашто су корисне.





Пре него што зароните у ове практичне примере, можда ћете желети да подесите Питхон виртуелно окружење. Ако то чак ни не желите да урадите, онда бисте требали барем испробати ове примере са интерактивном шкољком Питхон на мрежи .





Шта је ламбда у Питхону?

Ламбда је једноставно начин дефинисања функције у Питхону. Понекад су познати и као „ламбда оператори“ или „ламбда функције“.

Ако сте раније користили Питхон, вероватно сте дефинисали своје функције помоћу деф кључна реч, и до сада вам је добро радила. Па зашто постоји други начин да се уради иста ствар?



Разлика је у томе што су ламбда функције анонимне. Значи, то су функције које не морају да се именују. Користе се за креирање малих, једнократних функција у случајевима када би 'права' функција била превелика и гломазна.

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





Најчешћа употреба ламбда функција је у коду који захтева једноставну једноредну функцију, где би било претјерано написати потпуну нормалну функцију. Ово је детаљније обрађено у наставку, под „Шта је са картом, филтрирањем и смањењем?“.

Како користити Ламбде у Питхону

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





def add_five(number):
return number + 5

print(add_five(number=4))

Ова функција је врло основна, али служи за илустрацију ламбда. Можда је ваше сложеније од овога. Ова функција додаје пет било ком броју који јој се пренесе кроз број параметар.

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

add_five = lambda number: number + 5

print(add_five(number=4))

Уместо да користите деф , Реч ламбда се користи. Заграде нису потребне, али све речи које следе ламбда кључне речи су креиране као параметри. Двотачка се користи за одвајање параметара и израза. У овом случају израз је број + 5 .

Нема потребе да користите повратак кључна реч --- ламбда то аутоматски ради уместо вас.

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

како се користи командна линија на Виндовс 10
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

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

Ако још увек нисте сигурни у погледу тачке ламбда, следећи одељак ће вам помоћи да видите светло.

Питхон Ламбде са картом, филтрирањем и смањењем

Основна библиотека Питхон има три методе које се називају Мапа , смањити , и филтер . Ове методе су вероватно најбољи разлози за коришћење ламбда функција.

Тхе Мапа функција очекује два аргумента: функцију и листу. Она преузима ту функцију и примењује је на сваки елемент на листи, враћајући листу измењених елемената као објекат мапе. Тхе листа функција се користи за поновно претварање резултирајућег објекта карте у листу.

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

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

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

Ова функција карте је прилично згодна, али могла би бити и боља. тхе адд_фиве функција се преноси као аргумент, али шта ако не желите да креирате функцију сваки пут када користите мапу? Уместо тога можете користити ламбда!

Ево како тај исти код изгледа, само са функцијом замењеном ламбда:

како сортирати пријемну пошту Гмаил -а по пошиљаоцу
list1 = [2, 4, 6, 8]
print(list1)

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

Као што видите, целина адд_фиве функција више није потребна. Уместо тога, ламбда функција се користи за одржавање ствари уредним.

Са филтер функцију, процес је приближно исти. Филтер узима функцију и примењује је на сваки елемент на листи и креира нову листу само са елементима који су узроковали да функција врати Труе.

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

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)

Ламбда функција је заменила потребу за целином већи_ него_тен_фунц ! И то је учињено у пет једноставних речи. Зато су ламбде моћне: смањују неред за једноставне задатке.

На крају, погледајмо смањити . Редуце је још једна цоол Питхон функција. Примењује текући прорачун на све ставке на листи. Ово можете користити за израчунавање укупног збира или множење свих бројева заједно:

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

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

Овај пример је потребно увести смањити од фунцтоолс модул, али не брините, модул фунцтоолс је део Питхон цоре библиотеке.

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

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

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

На шта треба пазити уз Питхон Ламбде

Ови примери су показали колико су ламбда функције једноставне, заједно са мапирањем, филтрирањем и смањивањем, из Питхон основне библиотеке. Ипак, постоји неколико употреба у којима ламбда функције не помажу.

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

За више савета погледајте наше водич за објектно оријентисано програмирање у Питхону и погледајте наш водич са ФАК -ом за почетнике у Питхону.

Објави Објави Твеет Емаил 3 начина да проверите да ли је е -пошта права или лажна

Ако сте примили е -поруку која изгледа помало сумњиво, увек је најбоље да проверите њену аутентичност. Ево три начина да утврдите да ли је адреса е -поште права.

Прочитајте следеће
Повезане теме
  • Програмирање
  • Питхон
  • Кодирање Туториали
О аутору Јое Цобурн(136 објављених чланака)

Јое је дипломирао рачунарство на Универзитету Линцолн, УК. Он је професионални програмер софтвера и када не лети беспилотним летелицама или не пише музику, често га се може затећи како фотографише или производи видео записе.

Више од Јоеа Цобурна

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили