Průvodce pro začátečníky k porozumění funkcím Python Lambda

Průvodce pro začátečníky k porozumění funkcím Python Lambda

Lambdas v Pythonu jsou jednou z nejužitečnějších, nejdůležitějších a nejzajímavějších funkcí, o kterých byste měli vědět. Bohužel je také snadné je špatně pochopit a mýlit se.





V tomto článku vysvětlíme vše, co potřebujete vědět o těchto tajemných funkcích, jak je používat a proč jsou užitečné.





Než se ponoříte do těchto praktických příkladů, možná budete chtít nastavit virtuální prostředí Pythonu. Pokud to ani nechcete dělat, měli byste alespoň vyzkoušet tyto příklady s interaktivním online prostředím Python .





Co je to Lambda v Pythonu?

Lambda je jednoduše způsob, jak definovat funkci v Pythonu. Někdy se jim říká „lambda operátoři“ nebo „lambda funkce“.

Pokud jste již dříve používali Python, pravděpodobně jste definovali své funkce pomocí def klíčové slovo a zatím vám to fungovalo. Proč tedy existuje jiný způsob, jak udělat totéž?



Rozdíl je v tom, že funkce lambda jsou anonymní. To znamená, že jsou to funkce, které není třeba pojmenovávat. Používají se k vytváření malých, jednorázových funkcí v případech, kdy by 'skutečná' funkce byla příliš velká a objemná.

Lambdas vrací funkční objekt, který lze přiřadit proměnné. Lambdas může mít libovolný počet argumentů, ale může mít pouze jeden výraz. Uvnitř lambdas nelze volat jiné funkce.





Nejběžnější použití pro funkce lambda je v kódu, který vyžaduje jednoduchou jednořádkovou funkci, kde by bylo nadbytečné napsat úplnou normální funkci. Podrobněji je to popsáno níže v části „Co s mapou, filtrem a zmenšením?“.

Jak používat lambdy v Pythonu

Než se podíváme na funkci lambda, podívejme se na super základní funkci definovanou „tradičním“ způsobem:





def add_five(number):
return number + 5

print(add_five(number=4))

Tato funkce je velmi základní, ale slouží k ilustraci lambdas. Vaše může být složitější než toto. Tato funkce přidá pět k libovolnému číslu, které jí bylo předáno číslo parametr.

Takto to vypadá jako funkce lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

Spíše než používat def , slovo lambda se používá. Nevyžadují se žádné závorky, ale žádná slova následující za lambda klíčová slova jsou vytvořena jako parametry. Dvojtečka se používá k oddělení parametrů a výrazu. V tomto případě je výraz číslo + 5 .

Není třeba používat vrátit se klíčové slovo --- lambda to udělá za vás automaticky.

Zde je návod, jak byste vytvořili funkci lambda se dvěma argumenty:

jak opravit bsod windows 10
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

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

Pokud si stále nejste jisti bodem lambdas, další část se ponoří a pomůže vám vidět světlo.

Python Lambdas s mapou, filtrem a zmenšením

Základní knihovna Pythonu má tři metody mapa , snížit , a filtr . Tyto metody jsou možná nejlepšími důvody pro použití funkcí lambda.

The mapa funkce očekává dva argumenty: funkci a seznam. Vezme tuto funkci a použije ji na každý prvek v seznamu a vrátí seznam upravených prvků jako objekt mapy. The seznam funkce slouží k opětovnému převodu výsledného objektu mapy zpět do seznamu.

Zde je návod, jak používat mapu bez lambda:

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

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

Tato funkce mapy je docela užitečná, ale mohla by být lepší. the add_five funkce je předána jako argument, ale co když nechcete vytvořit funkci pokaždé, když použijete mapu? Místo toho můžete použít lambdu!

Zde vypadá stejný kód, pouze s funkcí nahrazenou lambda:

proč můj mac říká, že bluetooth není k dispozici
list1 = [2, 4, 6, 8]
print(list1)

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

Jak vidíte, celý add_five funkce již není vyžadována. Místo toho se funkce lambda používá k udržení pořádku.

S filtr funkce, proces je téměř stejný. Filtr vezme funkci a použije ji na všechny elemeny v seznamu a vytvoří nový seznam pouze s prvky, které způsobily, že funkce vrátí True.

Za prvé, bez lambdas:

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)

Na tomto kódu není nic špatného, ​​ale začíná být trochu dlouhý. Podívejme se, kolik řádků může lambda odstranit:

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

Funkce lambda nahradila potřebu celku greater_than_ten_func ! A je to hotovo v pěti jednoduchých slovech. To je důvod, proč jsou lambdy silné: snižují nepořádek u jednoduchých úkolů.

Nakonec se podívejme snížit . Reduce je další skvělá funkce Pythonu. Na všechny položky v seznamu aplikuje postupný výpočet. Můžete to použít k sečtení součtu nebo znásobení všech čísel dohromady:

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

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

Tento příklad je třeba importovat snížit z functools modul, ale nebojte se, modul functools je součástí základní knihovny Pythonu.

Příběh je velmi podobný lambdě, není potřeba funkce:

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

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

Na co si dát pozor u Python Lambdas

Tyto příklady ukázaly, jak snadné jsou funkce lambda, spolu s mapou, filtrováním a omezováním, ze základní knihovny Pythonu. Přesto existuje několik použití, kde funkce lambda nepomáhají.

Pokud děláte něco jiného než základní úkol nebo chcete volat jiné metody, použijte normální funkci. Lambdy jsou skvělé pro jednorázové anonymní funkce, ale musí mít pouze jeden výraz. Pokud vaše lambda začíná vypadat jako regulární výraz, pak je pravděpodobně čas přehodnotit speciální metodu.

Další tipy najdete v našem průvodce objektově orientovaným programováním v Pythonu a podívejte se na naši příručku FAQ pro začátečníky v Pythonu.

Podíl Podíl tweet E-mailem 3 způsoby, jak zkontrolovat, zda je e -mail skutečný nebo falešný

Pokud jste obdrželi e -mail, který vypadá trochu pochybně, je vždy nejlepší zkontrolovat jeho pravost. Zde jsou tři způsoby, jak zjistit, zda je e -mail skutečný.

Číst dále
Související témata
  • Programování
  • Krajta
  • Návody na kódování
O autorovi Joe Coburn(136 publikovaných článků)

Joe je absolventem informatiky na University of Lincoln, UK. Je profesionálním vývojářem softwaru, a když zrovna neletí drony nebo nepíše hudbu, často ho lze zastihnout při fotografování nebo produkci videí.

Více od Joe Coburn

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru