- Xiaomi Smart Band 10 - a hetedik napon megpihen
- Brutális összegeket fektet a Samsung az AI fejlesztésekbe
- Xiaomi 17 - még mindig tart
- Külföldi prepaid SIM-ek itthon
- 18. helyet ért a Samsung Galaxy S26 Ultra kamerarendszere a DxOMarknál
- Samsung Galaxy S23 Ultra - non plus ultra
- Szingapúri tanúsítvány utal a Xiaomi 17T széria nemzetközi érkezésére
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Xiaomi 17 Ultra - jó az optikája
Ú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
- Honor Magic6Pro 512GB,Újszerű,Adatkabel,12 hónap garanciával
- Honor 200 Pro 512GB,Újszerű,Dobozaval,12 hónap garanciával
- Lenovo Yoga Pro 9 - Core Ultra 9 185H - 64GB DDR5 - 1TB SSD- RTX4070 8Gb -16" mini LED-es 3200x2000
- Xiaomi Redmi Note 14 Pro 256GB,Újszerű,Dobozaval,12 hónap garanciával
- Apple iPhone 17E 256GB,Új,Dobozaval,24 hónap garancia
- Apple iPhone 14 / 128GB / Kártyafüggetlen / 12Hó Garancia / Akku: 87%
- Dell 14 Latitude 7450 WUXGA 2in1 Touch X360 Ultra5 135U 12mag 16GB 512GB Win11 Pro WiFi7 Garancia
- Új MSI 15 Katana FHD IPS 144Hz i7-13620H 10mag 16GB DDR5 1TB SSD Nvidia RTX 4060 8GB Win11 Garancia
- Apple iPhone 12 Mini 64GB, Kártyafüggetlen, 1 Év Garanciával
- Dell Precision 5560 i7 32GB RAM 512GB SSD NVIDIA RTX A2000 FHD+
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


