Hirdetés
- Motorola Edge 70 Fusion – stílusosan főznek
- Félő, hogy az okosszemüveg a szexuális zaklatók játékszere lesz
- Snapdragon 8 Elite Gen 5 és folyadékhűtés jöhet a RedMagic új gamer táblagépébe
- Nagyobb akkumulátorral jöhet a Motorola Razr 70 Ultra, másban alig változna
- 4G-s verzióban is választható a Tecno Spark 50
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Apple iPhone 17 Pro Max – fennsík
- Félő, hogy az okosszemüveg a szexuális zaklatók játékszere lesz
- Xiaomi 15T - reakció nélkül nincs egyensúly
- AI: tanulj már meg rendesen pózolni, ember!
- iPhone topik
- Telekom mobilszolgáltatások
- Apple iPhone Air - almacsutka
- Google Pixel topik
- Poco X8 Pro Max - nem kell ide sem bank, sem akkubank
Új hozzászólás Aktív témák
-
Siriusb
veterán
-
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
- Samsung Galaxy S24 8/128GB Újszerű,Kártyafüggetlen,Dobozos,Tartozékaival. 1Év Garanciával!
- Samsung galaxy s21 ultra + watch 3
- Lenovo Thinkpad T14 Gen4 14" FHD+ IPS i7-1365U 16GB 256GB NVMe gar
- Gigabyte G6X9MG 15.6" FHD+ IPS i7-13650HX RTX 4050 16GB 512GB NVMe magyar vbill gar
- Samsung Full HD LED TV (UE32EH5300)
- Dell Inspiron 5490 /i5-10210U/4GB/500GB M.2/MX230/WIN11/Új akku/Billentyűzet problémás/Számlával!
- Samsung Galaxy S25 Ultra 256GB, Kártyafüggetlen, 1 Év Garanciával
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- AKCIÓ! ASUS ROG Crosshair VIII Extreme alaplap garanciával hibátlan működéssel
- Gigabyte RTX 5060 Ti 16GB // Felbontott, új // SZÁMLA // GARANCIA //
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

