Hirdetés
- Android alkalmazások - szoftver kibeszélő topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy A54 - türelemjáték
- 6500 mAh-s aksival debütált a Poco M8 Pro 5G, ez az ára itthon
- iOS alkalmazások
- CES 2026: Aláírjuk a Motorola Signature mutatós külsejét
- Apple iPhone 13 mini - miért nem veszik elegen?
- Poco F7 – bajnokesélyes
- Azonnali mobilos kérdések órája
- CES 2026: Színre lép a Motorola Razr Fold
Új hozzászólás Aktív témák
-
cousin333
addikt
válasz
oszi666
#2659
üzenetére
A lambda alapvetően egyszerű függvények helyett van, ami így nem foglal nevet, és kompaktabbul használható, mert nem kell előtte definiálni és elég egy sort írni. Nyilván nem kell mindig ezt használni, de néha jól jöhet.
Egy példa a pandas modul használatával:
import pandas as pddata = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})Az eredmény egy indexelt "táblázat", oszlop fejlécekkel:
A B
0 1 4
1 2 5
2 3 6Tegyük fel, hogy egy számításhoz minden sorban össze akarom adni az A oszlop köbét és a B oszlop felét. Hogyan lehet ezt megcsinálni? Létezik az apply() metódus, ami soronként, vagy oszloponként végigmegy a táblázaton, és az első argumentumban megadott függvényt futtatja. Az első megoldás, hogy készítünk egy függvényt, majd ezt használjuk:
def process(sor):return sor.A**3 + sor.B / 2data.apply(process, axis=1)Az eredmény:
0 3.0
1 10.5
2 30.0
dtype: float64A megoldás tehát működik, viszont a process mostantól egy foglalt név (vagy felülír egy korábbit) olyasvalamire, amit talán soha többé nem használunk. Ráadásul írtunk 2 extra sort. Ugyanez lambda függvénnyel jóval egyszerűbb:
data.apply(lambda x: x.A**3 + x.B/2, axis=1)A helyzet hasonló a list comprehension-hoz. Azt is meg tudod oldani for ciklussal, de miért írnád azt, hogy
a = [1, 2, 3, 4, 5, 6, 7, 8]b = []for elem in a:if elem % 2 == 0:b.append(elem**2)ha írhatod jóval egyszerűbben (és gyorsabban) is:
a = [1, 2, 3, 4, 5, 6, 7, 8]b = [elem**2 for elem in a if a % 2 == 0]Sőt, utóbbi esetben, ha mondjuk alapvetően csak ezen négyzetszámoknak az összegére vagyunk kíváncsiak, akkor azt is írhatjuk, hogy:
szumma = sum(elem**2 for elem in a if a % 2 == 0)és akkor nem számoltunk ki és tároltunk el feleslegesen egy egész listát.
Új hozzászólás Aktív témák
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- Android alkalmazások - szoftver kibeszélő topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Linux kezdőknek
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Samsung Galaxy A54 - türelemjáték
- Valami baja van a tápomnak
- 6500 mAh-s aksival debütált a Poco M8 Pro 5G, ez az ára itthon
- Azonnali alaplapos kérdések órája
- További aktív témák...
- Honor 90 Lite 256GB, Kártyafüggetlen, 1 Év Garanciával
- CoolerMaster MM710 53gr pehelykönnyű gamer egér eladó
- GYÖNYÖRŰ iPhone XR 128GB Black-1 ÉV GARANCIA - Kártyafüggetlen, MS3985, 100% Akkumulátor
- í kilenc! AKCIÓS PRECÍZIÓS KÉSZÜLÉK! 7560 i9-11950H 64GB RAM 1TB SSD Nvidia RTX A3000 6GB 1 év gar
- Keresünk Galaxy S23/S23+/S23 Ultra/S23 FE
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest


