Ismerje meg a Python-lista adatszerkezetét – 1. rész
Az Adatstruktúra adattípusok gyűjteménye, a köztük lévő kapcsolatok és az adatokon alkalmazható funkciók vagy műveletek. Az adattípus lehet karakterlánc, Egész szám, Lebegő érték és így tovább.
Mi a különbség a változtatható/megváltoztathatatlan objektum között?
Változó objektumok
- Olyan objektumok, amelyek állapota a létrehozás után módosítható, például elemek hozzáadása, frissítése vagy törlése.
- A Listák, a szótár, a készlet, a bytearray a python változó objektumtípusai.
Megváltozhatatlan tárgyak
- Az objektum állapota nem módosítható. Az objektum létrehozása után nem tudunk elemeket hozzáadni, eltávolítani vagy frissíteni.
- String, Integer, Tuples, Frozenset néhány megváltoztathatatlan objektumtípus a pythonban.
Mi a különbség a homogén/heterogén adatstruktúra között?
- Hogén adatstruktúra – Az adatelemek azonos típusúak lesznek (pl.: tömb).
- Heterogén adatstruktúra – Előfordulhat, hogy az adatelemek nem azonos típusúak (pl. lista, sorok, halmazok stb.).
Mik azok a primitív és nem primitív adattípusok?
Mielőtt megértené a beépített adatstruktúra funkcionalitását, lássunk néhány beépített függvényt, amelyeket az adatstruktúra objektumokkal fogunk használni.
- dir(obj) – egy beépített függvény, amely visszaadja az attribútumot és a metódusokat.
- len(obj) – Egy objektum hosszát (elemek számát) adja vissza. Az argumentum lehet sorozat (például karakterlánc, bájtok, sor, lista vagy tartomány) vagy gyűjtemény (például szótár, halmaz vagy rögzített halmaz).
- del – Ez a beépített kulcsszó objektumok névtérből való törlésére vagy elemek eltávolítására szolgál egy objektumból, például listából, szótárból stb.
- type(obj) – A type() függvény vagy az objektum típusát adja vissza, vagy egy új típusú objektumot ad vissza az átadott argumentumok alapján.
- id() – Ez a függvény egy objektum „identitását” adja vissza. Ez egy egész szám, amely garantáltan egyedi és állandó ennek az objektumnak az élettartama során.
Most, hogy néhány fontos részletet látott, folytassuk a python adatstruktúrákkal.
A Python beépített adatstruktúrákkal rendelkezik, valamint a felhasználók meghatározhatják saját adatszerkezeteiket. A beépített adatstruktúra a következőket tartalmazza: LIST, DITIONARY, TUPLE és SET. Néhány példa a felhasználó által definiált adatstruktúrákra: STACK, QUEUES, TREE, HASHMAP stb.
A más programozási nyelvekből érkezők nagyon jól ismerik a tömbtípust. De a pythonban nem olyan gyakoriak.
Itt a lista hasonlít egy tömbhöz, de a lista lehetővé teszi számunkra, hogy bármilyen adattípus értékét tároljuk (heterogén), míg a tömb csak bizonyos típusú adatokat tárol (int, float stb.). A tömb használatához kifejezetten importálnia kell a tömböt a „tömb” modulból.
Ebben a Python-cikksorozatban megvizsgáljuk, mi az adatstruktúra és a python beépített adatstruktúra.
LISTA
A Lista egy adatstruktúra, amely különböző adattípusok gyűjteménye. Mit jelent a „különféle adattípusok gyűjtése”? A Lista karakterláncokat, egész számokat, lebegőpontos értékeket, beágyazott listát és így tovább tárolhat.
A Lista objektumok „Mutable”, ami azt jelenti, hogy a listán belül létrehozott elemek elérhetők, módosíthatók vagy törölhetők. Lista támogatja az indexelést. A listák minden eleme egy címhez van rendelve, és ez a cím használható az adott elemérték eléréséhez vagy módosításához.
- Hozzon létre egy listát
- Lista beszúrása/Hozzáférés/Módosítás
- Lista törlése
LISTA LÉTREHOZÁS
A lista szögletes zárójelek használatával hozható létre.
>>> name_empty = [] # Empty list
>>> name = ['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will'] # list with string data type
>>> name_int = [1,2,3] # list with Integer data type
>>> name_mixed = [name_int,name,1,2,3.14] # list with nested list items.
>>> name_mixed
[[1, 2, 3], ['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will'], 1, 2, 3.14]
>>> name_int
[1, 2, 3]
Használhatjuk a beépített type()
függvényt az objektum típusának ellenőrzésére.
>>> type(name)
A list példány metódusait és attribútumait a dir()
függvény segítségével érhetjük el.
>>> dir(name)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
A lista elemeinek teljes számát a len()
módszerrel tudjuk megtudni.
>>> len(name)
Létrehozhatunk egy új listát a list.copy()
metódussal.
>>> name_new = name.copy()
>>> name_new
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
LISTA BEHELYEZÉS/ELÉRÉS/MÓDOSÍTÁS
A list.insert(i, x)
metódussal tetszőleges pozícióban beszúrhatunk egy elemet a listába.
>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> name
['Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.insert(0,'Tom') # Insert method takes 2 arguments (Index position, Item)
>>> name
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will'] # Tom is inserted at the 0th position.
Használhatjuk a list.append(x)
metódust egyetlen elem hozzáadásához a listához. Ezzel beszúrja az elemet a lista végére.
>>> name = []
>>> len(name)
0
>>> name.append('Leo')
>>> name.append('Matt')
>>> name.append('Kane')
>>> print(name)
['Leo', 'Matt', 'Kane']
A list.extend()
metódus segítségével több elemet is hozzáadhatunk a listához.
>>> new_name = ['Gowtham','Martin','Luis']
>>> name.extend(new_name)
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
A '+'
operátort is használhatjuk két lista kombinálásához. Mindkét lista különböző típusú lehet.
>>> a = [1,2,3]
>>> b = [2,3,3]
>>> c = a + b
>>> c
[1, 2, 3, 2, 3, 3]
>>> d = ['karthi','kenny']
>>> e = a + d
>>> e
[1, 2, 3, 'karthi', 'kenny']
Mint már említettük, az objektumok változtathatók. A listaelemek módosíthatók az indexpozícióra való hivatkozással és értéket adva hozzá.
>>> name # Before modified
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name[0] = 'Karthi'
>>> name # After Modified
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
A lista támogatja a pozitív és negatív indexelést is.
Az indexelés 0-tól, a negatív indexelés pedig -1-től kezdődik.
A listaelemet az indexpozíciójuk alapján érhetjük el.
>>> name[0] # Accessing the List item at index 0
'Leo'
>>> name[1]
'Matt'
>>> name[4]
'Petter'
>>> name[5]
'Will'
>>> name[-1] # Accessing the list item with negative indexing
'Will'
>>> name[-6]
'Leo'
A szeletelést is használhatjuk a lista elemeinek eléréséhez. A szeletelés lehetővé teszi, hogy egy sor elemhez hozzáférjünk a kezdő, befejező, lépés paraméterek megadásával.
SYNTAX: list[starting position, ending position, Step]
>>> name[0:3]
['Tom', 'Leo', 'Matt']
>>> name[:]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name[:4]
['Tom', 'Leo', 'Matt', 'Kane']
>>> name[:-2]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott']
>>> name[:-1]
['Tom', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter']
>>> name[:-1:2]
['Tom', 'Matt', 'Scott']
Egy adott érték előfordulásának számát a list.count(x)
módszerrel találhatjuk meg.
>>> name_int = [1,1,2,3,1]
>>> name_int.count(1)
3
Egy adott elem indexpozícióját a list.index(x[, start[, end]])
módszerrel találhatjuk meg.
>>> name # Inserted ‘Will’ at the end of the list. Now we have 2 name ‘Will’.
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will']
>>> name.index('Will) # Returns the index position of first occurence of x.
0
>>> name.index('Will',2) # Starting index positon’2’ is given.
7
>>> name.index('Will',2,4) # Starting and Ending Index position is given. Since there is no occurence of ‘Will’ within the given search position it will throw Value Error.
Traceback (most recent call last):
File "<stdin>", line 1, in
ValueError: 'Will' is not in list
Használhatjuk a list.reverse()
metódust a lista elemeinek megfordításához.
>>> name
['Karthi', 'Leo', 'Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.reverse()
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi']
LISTA TÖRLÉSE
A list.pop(x)
metódussal eltávolíthatunk egy elemet a listából az x
pozícióban. Ez a funkció eltávolítja az elemet a listáról, és megjeleníti az eltávolított elemet. Ha az x
nincs megadva, akkor a pop()
metódus a lista utolsó elemét adja vissza.
>>> name
['Will', 'Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
>>> name.pop(0)
'Will'
>>> name
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin', 'Luis']
>>> name.pop()
'Luis'
Használhatjuk a list.remove (x)
metódust is az elem eltávolításához a listáról. Itt az x
veszi az elem értékét, és ValueError-t dob, ha az x
nincs a listában.
>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> name.remove('Leo')
>>> name
['Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> name.remove('Leo')
Traceback (most recent call last):
File "", line 1, in
ValueError: list.remove(x): x not in list
A listát üressé tehetjük, ha a lista nevét szögletes zárójelbe adjuk, vagy a list.clear()
metódussal.
>>> name1 = name.copy()
>>> name1
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin']
>>> name
['Petter', 'Scott', 'Kane', 'Matt', 'Leo', 'Karthi', 'Will', 'Gowtham', 'Martin']
>>> name = []
>>> name
[]
>>> name1.clear()
>>> name1
[]
Ahelyett, hogy listás módszereket használnánk a lista üressé tételére vagy egy elem eltávolítására a listáról, használhatjuk a beépített del
kulcsszót a műveletek végrehajtására. A „del” kulcsszó törölhet egy listaobjektumot a memóriából, vagy törölhet egy elemet a listából, vagy törölhet egy elemet egy szeletből.
>>> name = ['Leo','Matt','Kane','Scott','Petter','Will']
>>> del name[0]
>>> name
['Matt', 'Kane', 'Scott', 'Petter', 'Will']
>>> del name[-3:]
>>> name
['Matt', 'Kane']
>>> del name[:]
>>> name
[]
A beépített id()
függvény egy objektum „identitását” adja vissza. Ez egy egész szám, amely garantáltan egyedi és állandó ennek az objektumnak az élettartama során.
>>> id(name)
139979929658824
>>> del name
>>> id(name)
Traceback (most recent call last):
File "", line 1, in
NameError: name 'name' is not defined
Megjegyzés: eltávolítottuk a listaváltozót a memóriából a del()
segítségével, ezért névhibát ad.
help() funtion:
A beépített súgó function()
nagyon hasznos egy adott objektumról vagy az objektum metódusairól szóló részletek megszerzéséhez.
help(object)
help(object.method)
Összegzés
Ebben a cikkben eddig azt láthattuk, hogyan használhatjuk a lista adatszerkezetet listaobjektumok tárolására, elérésére, módosítására és törlésére a lista metódusok használatával. Láttunk néhány beépített függvényt is, mint például az id(), dir(), type(), help()< amelyek nagyon hatékony függvények. A pythonban elérhető a listaértés is, amely tömörebb és olvashatóbb módot biztosít a lista létrehozására.