- iPhone topik
- Fotók, videók mobillal
- Redmi Note 8 és 8T
- Samsung Galaxy S24 - nos, Exynos
- Gyorsabb és drágább - kezünkben a Samsung Galaxy S23
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Motorola Edge 60 és Edge 60 Pro - és a vas?
- Samsung Galaxy A54 - türelemjáték
- Motorola Edge 50 Neo - az egyensúly gyengesége
Ú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 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.
-
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
Hirdetés
- Samsung Galaxy A12 64GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A04 128GB, Kártyafüggetlen, 1 Év Garanciával
- Újra Akcióban!!! Ducky One 2 Mini és SF billentyűzetek a bolti ár töredékéért! Számla+Gari
- BESZÁMÍTÁS! ASUS H81M-PLUS H81 chipset alaplap garanciával hibátlan működéssel
- Lenovo V130-15IGM laptop (Pentium Silver N5000/8GB/256GB SSD
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest