Ú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.
-
cousin333
addikt
Igen, valahogy úgy.
Ami a GUI-t illeti: Pythonban több út is vezet az igazsághoz. Egyszerű modul elvileg a tkinter ami tulajdonképen része az alap Python telepítésnek. Segíteni nem tudok benne, sose használtam...

Másik, komolyabb opció a Qt keretrendszer, amit a pyqt és társai tesznek használhatóvá. A korábban említett WinPython disztribúcióban pl. benne van minden, ami ehhez kell, például a Qt designer nevű program, amivel kézzel gyárthatsz (drag'n'drop módszerrel) égy ui kiterjesztésű GUI leíró fájt, amit pár sor kóddal Pythonban is használatba vehetsz. Szerintem nem triviális, de sokat ki lehet hozni belőle. video
Az általad említett feladathoz ugyanakkor szerintem remekül passzolna az IPython, újabb nevén Jupyter, ami egy továbbfejlesztett parancssori környezet, Az IPython Notebook ugyanakkor a böngészőben futtatja a Pythont! Egy vagy több soros cellákba írhatsz kódot (vagy szöveget), amit cellánként lehet végrehajtani, akár tetszőleges sorrendben. Nagyon jó adatok feldolgozásához, kísérletezgetéshez. A cella kimenete lehet szöveg (pl. mint a print), grafikon (pl. matplotlib), de már használhatsz widgeteket (lásd gomb és csúszka, meg ilyenek). Ezek elmenthetők HTML-ként is és megoszthatók. Az IPython egy külön csomag, de alapból benne van az Anaconda és Winpython disztribúciókban.
Ha statisztikai szoftvert szeretnél írni, akkor nagyon tudom ajánlani a pandas modult (bemutató, bemutató2). Sok hasznos, praktikus funkció, bőséges dokumentáció. Ez a csomag is része az Anaconda és a Winpython disztribúcióknak.
-
cousin333
addikt
Ez egy kicsit pongyola lesz, de talán segít...
Python:
- Python futtatókörnyezet
- része az IDLE nevezetű parancssoros Python interpeter
- ez A hivatalos Python telepítés, lásd itt
- vannak benne továbbá gyári modulok különböző feladatokra
- Linuxos analógiával élve ez a kernelSpyder IDE:
- egy népszerű, nyilt forráskódú fejlesztői környezet
- ez önmagában kevés, csak kód szerkesztésre van, magát a kódot a Python futtatókörnyezet hajtja végre
- külsős emberkék fejlesztik
- sokkal összetettebb és komolyabb, mint a "gyári" IDLE
- kódszerkesztő, súgó, aktuális változók listája
- párhuzamosan futtatható, független interpreter környezetek külön füleken (mint sok IDLE egymás mellett)
- más példák 3rd party IDE-re: PyCharm vagy Ninja IDEAnaconda:
- egy Python fejlesztői csomag
- ez konkrétan kereskedelmi, aminek ingyenes változata is van
- benne van a Python "alapcsomag", a Spyder IDE (a fejlesztéshez) és egyéb, külsősök által fejlesztett hasznos modulok (pl. Numpy)
- más példák: WinPython (ingyenes) vagy Canopy (kereskedelmi)
- Linuxos analógiával ezek a disztribúciók (Ubuntu, Mint, Debian...)A Codeskulptor tulajdonképpen olyan, mint pl. a Spyder, csak a kódot, amit a webes felületen beírsz egy szerveren lévő Python interpreter futtatja le, nem a saját géped.
Könyvből jó sok féle van, különösen, ha beszélni angol:
Byte of Python
Think Python
Dive Into Python
...
Új hozzászólás Aktív témák
- Székesfehérvár és környéke adok-veszek-beszélgetek
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Yettel topik
- talmida: My Art II.
- Honda topik
- Kuponkunyeráló
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Telekom mobilszolgáltatások
- Béta iOS-t használók topikja
- Ubiquiti hálózati eszközök
- További aktív témák...
- LENOVO ThinkCentre M93p (SFF)i5-4570,4GB DDR3,500GB SATA3 HDD,DVD,WIN10
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- Apple iPhone 15 / 128GB / Kártyafüggetlen / 12Hó Garancia / Akku:87%
- HP 255 G10 Ryzen 5 7520U 8 GB DDR5 256 GB SSD FHD Új 2 ciklus Gari 2028.
- Beszámítás! Asus TUF A16 FA608UH FHD Gamer notebook - R7 260 16GB DDR5 512GB SSD RTX 5050 8GB
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

