single
Lambda-Funktioner
Svep för att visa menyn
Lambda-funktioner är anonyma funktioner, vilket innebär att de inte har något namn. De skapas med hjälp av nyckelordet lambda och används ofta för att definiera korta funktioner där du kan ange en funktion direkt på plats.
Den grundläggande syntaxen för en lambda-funktion är följande:
lambda arguments: expression
lambda: nyckelordet som markerar början på en lambda-funktionsdefinition;arguments: listan över argument som funktionen tar emot;expression: uttrycket som körs när funktionen anropas. Resultatet av uttrycket returneras som funktionens värde.
Den viktigaste egenskapen hos lambda-funktioner är deras koncisa syntax. De är praktiska när du behöver definiera en enkel funktion utan att skriva mycket kod.
Enkelt och flera argument
En lambda-funktion kan ta emot ett eller flera argument:
1234567# Single argument square = lambda x: x**2 print(square(5)) # 25 # Multiple arguments add = lambda x, y: x + y print(add(3, 5)) # 8
Villkorslogik i lambda-funktioner
Du kan använda ett ternärt uttryck för att lägga till villkorslogik i en lambda:
123is_even = lambda x: "even" if x % 2 == 0 else "odd" print(is_even(4)) # "even" print(is_even(7)) # "odd"
Använda lambda med inbyggda funktioner
Ett vanligt användningsområde är att kombinera lambda-funktioner med inbyggda funktioner som map() och filter():
123456789prices = [100, 200, 300] # Apply 10% discount to each price discounted = list(map(lambda price: price * 0.9, prices)) print(discounted) # [90.0, 180.0, 270.0] # Keep only prices above 150 expensive = list(filter(lambda price: price > 150, prices)) print(expensive) # [200, 300]
Du kan också använda max() inuti en lambda för att hantera specialfall direkt i uttrycket:
123safe_value = lambda x: max(x, 0) # Returns 0 if x is negative print(safe_value(-5)) # 0 print(safe_value(10)) # 10
Funktionen max(a, b) jämför två tal och returnerar det större. När du parar ihop en variabel med 0 – som i max(x, 0) – fungerar det som ett skydd mot negativa tal:
-
Om x är positivt (t.ex. 100), returnerar
max(100, 0)värdet 100 eftersom 100 är större än 0. -
Om x är negativt (t.ex. -50), returnerar
max(-50, 0)värdet 0 eftersom 0 är större än -50.
Detta eliminerar behovet av ett komplext if-else-uttryck när du vill att alla negativa eller ogiltiga värden omedelbart ska bli 0.
Lambda-funktioner lämpar sig bäst för korta, enkla uttryck. Om din funktion kräver flera rader eller mer komplex logik är en vanlig def-funktion ett bättre val.
Svep för att börja koda
Det finns en lista med priser (prices), och ett lambda-uttryck ska implementeras som tar ett pris som parameter och drar av 13 % skatt från det.
- Definiera ett lambda-uttryck med hjälp av nyckelordet
lambda. - Lambda-uttrycket ska ta en parameter (
price). - Om
priceär negativt, betraktas det som ogiltigt och returnerar 0 med hjälp av funktionenmax()direkt i lambda-uttrycket. - Lambdan ska först kontrollera priset och sedan dra av 13 % från det giltiga beloppet.
- Använd en listkomprehension för att applicera
apply_taxpå varje element iprices.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal