Ú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 pd
data = 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 / 2
data.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.
[ Szerkesztve ]
"We spared no expense"
Új hozzászólás Aktív témák
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Mobil flották
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- Júliustól kötelező biztosítást kell fizetni egyes rollerek után is!
- Anyagi katasztrófára figyelmezteti az Apple-t a brit média
- Filmvilág
- iPhone topik
- Milyen TV-t vegyek?
- Skoda, VW, Audi, Seat topik
- LEGO klub
- További aktív témák...
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Promenade Publishing House Kft.
Város: Budapest