Junior
Mik a különbségek a tömbök és a listák között Pythonban?
sobes.tech MI
Válasz az MI-től
A Python listák (list) módosítható (mutable) rendezett elemek gyűjteményei. Tartalmazhatnak különböző adattípusú elemeket. Széles körben használják a legtöbb feladathoz.
A Pythonban az array-ek általában az array vagy numpy könyvtárak struktúráira utalnak.
array.array:
- Azonos típusú elemek (számok) tárolására tervezték.
- Memóriában tömörebbek, mint a listák, mivel folyamatosan tárolják az elemeket.
- Néhány alacsony szintű műveletet és átalakítást támogatnak (pl. byte-okká alakítás).
import array
# Egész számok tömbjének létrehozása
arr = array.array('i', [1, 2, 3, 4, 5])
print(arr) # array('i', [1, 2, 3, 4, 5])
# Más típusú elem hozzáadása hibát eredményez
# arr.append("szia") # TypeError: egész szám szükséges (str-t kapott)
numpy.ndarray:
- A tudományos számítások fő struktúrája.
- Szintén azonos típusú elemek (általában számok) tárolására tervezték, de lehet többdimenziós.
- Magas teljesítményt nyújt vektorizált műveletekkel.
- Széles körű matematikai függvényeket és módszereket tartalmaz az adatok kezeléséhez.
import numpy as np
# NumPy tömb létrehozása
np_arr = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
print(np_arr) # [1. 2. 3. 4. 5.]
# Vektorizált művelet
result = np_arr * 2
print(result) # [2. 4. 6. 8. 10.]
Fő különbségek:
| Jellemző | Lista (list) |
array.array |
numpy.ndarray |
|---|---|---|---|
| Adattípus | Heterogén | Homogén (a dtype szerint) |
Homogén (a dtype szerint) |
| Módosíthatóság | Módosítható | Módosítható | Módosítható |
| Teljesítmény | Alacsonyabb numerikus műveleteknél | Magasabb, mint a listák | Legmagasabb vektorizált műveleteknél |
| Használat | Általános célokra | Hatékony számok tárolására | Tudományos számítások, adatelemzés |
| Dimenzió | Egydimenziós | Egydimenziós | Többdimenziós |
Így a fő különbség az elemek homogénsége (a tömbök esetében) és szakosodottsága: array a memória, numpy a számítások, míg a listák sokoldalú eszközök.