- Itt a Google Pixel 10a EU-s energiacímkéje
- Apple iPhone 16 Pro - rutinvizsga
- Beletenyerelnek a memóriaárak a mobileladásokba
- Fotók, videók mobillal
- Kicsi, USB-C, több protokollt támogató Xiaomi töltő jelent meg
- Poco F7 – bajnokesélyes
- Beköszönt a hajlítható telefonok aranykora
- Sony WF-1000XM6 – ez évi etalon?
- Reklámok kikapcsolása Xiaomi, Redmi és Poco telefonokon
- Cáfolja a Realme, hogy leépülne
Ú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
- TCL LCD és LED TV-k
- Itt a Google Pixel 10a EU-s energiacímkéje
- Autószerelők, autószerelés
- CADA, Polymobil, és más építőkockák
- Hardcore café
- PlayStation 5
- Apple iPhone 16 Pro - rutinvizsga
- Kormányok / autós szimulátorok topikja
- Kutya topik
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- További aktív témák...
- Sigma 12-24mm f/4.5-5.6 EX DG HSM
- Eladó 4GB DDR4 laptop RAM-ok (SO-DIMM) többféle órajellel ( 10 darab )
- OHH! MSI CYBORG 15 Gamer Tervező Laptop 15,6" -30% i7-13620H 10Mag 16/512 RTX 4060 8GB FHD 144Hz
- ELADÓ 4 darab 8GB DDR4 ECC Registered (RDIMM) Szerver RAM modul
- Építőipari csomag (vakológépek, targoncák, építőipari eszközök és kellékek, egyéb, sok más)
- Dell Latitude E6410 i5 M560, Nvidia NVS 3100M 512MB GDDR3, 4Gb RAM, 250GB HDD, jó akku, számla gar
- Jó áron eladó Lenovo ThinkPad T14s Gen 3/i5-1240P/16 GB/256 SSD/FHD+/IPS/Garancia/
- iking.hu Apple iPhone 14 128GB Midnight használt 100% akku 6 hónap garancia
- Jó ÁRON ELADÓ! Üzleti HP Elitebook 1040 G9 Laptop! / i5-1245U 16GB 256GB FHD
- Gamer PC-Számítógép! Csere-Beszámítás! R7 5700 / RTX 2080Ti 11GB / 16GB DDR4 / 1TB SSD!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest


