Ebben a cikkben megtudhatjuk a lista és a tömbök közötti legfontosabb különbségeket, valamint a két adatstruktúra használatát.
A listák és a tömbök egy vagy több objektumot vagy értéket tárolnak meghatározott sorrendben. A listában vagy a duplában tárolt objektumok bármilyen típusúak lehetnek, beleértve a None kulcsszó által definiált semmit.
A listák és a tuplék hasonlóak a legtöbb összefüggésben, de vannak olyan különbségek, amelyeket ebben a cikkben fogunk találni.
Szintaxis különbségek
A lista és a kettő szintaxisa kissé eltér. A listákat szögletes zárójelek ()
, a Tupleket zárójelek veszik körül ()
.
1.1. Példa: Lista létrehozása vs. Tuple létrehozása
list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)
Kimenet:
(1,2,3,4) (1,2,3,4)
Fent definiáltunk egy list_num nevű változót, amely számok listáját tartalmazza a -tól 1
a 4
. -Ig . A listát zárójelek veszik körül ()
. Meghatároztuk a tup_num változót is; amely egy számot tartalmaz kettőtől 1
ig 4
. A duplát zárójel veszi körül ()
.
A pythonban van egy type()
függvényünk, amely megadja a létrehozott objektum típusát.
1.2. Példa: Keresse meg az adatstruktúra típusát a type () függvény használatával
type(list_num) type(tup_num)
Kimenet:
lista duplája
Változtatható lista vs megváltoztathatatlan tincs
A lista változtatható jellegű, vagyis a lista létrehozása után az igényeknek megfelelően módosítható vagy módosítható, míg a duplának változhatatlan jellege van, azaz a duplát a létrehozása után nem lehet megváltoztatni vagy módosítani.
2.1. Példa: Tétellista módosítása vs Tuple
list_num(2) = 5 print(list_num) tup_num(2) = 5
Kimenet:
(1,2,5,4) Traceback (a legutóbbi hívás utoljára): A "python" fájl 6. sora a TypeError objektumban: 'tuple' objektum nem támogatja az elem hozzárendelését
A fenti kódban 5
a list_num értéket rendeltük az indexhez, 2
és 5
az indexnél találtuk meg 2
a kimenetet. Ezenkívül hozzárendeltük 5
a tup_num indexhez, 2
és meg is kaptuk type error
. Nem módosíthatjuk a duplát megváltoztathatatlan jellege miatt.
Megjegyzés: Mivel a tuple változhatatlan, ezek rögzített méretűek és a lista változó méretű.
Elérhető műveletek
A listáknak több beépített funkciója van, mint a duplának. Tudjuk használni dir((object))
beépített funkció, hogy az összes kapcsolódó funkciók listáját, és tuple.
3.1. Példa: Lista könyvtár
dir(list_num)
Kimenet:
('__add__', '__class__', '__contain__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__get __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __ne__ ' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'append', 'append', copy ',' count ',' extension ',' index ','beszúrni ',' pop ',' eltávolítani ',' fordított ',' rendezni ')
3.2. Példa: Tuple Directory
dir(tup_num)
Kimenet:
('__add__', '__class__', '__contain__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getne', '__getne __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ',' __reduce__ ',' __reduce__ ' , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')
Világosan láthatjuk, hogy annyi további funkció van társítva egy listához egy duplán. Beillesztési és pop-műveletet végezhetünk, eltávolíthatjuk és rendezhetjük az elemeket a listából beépített funkciókkal, amelyek nem állnak rendelkezésre a Tuple-ban.
Méret összehasonlítás
A sorrendű műveletek mérete kisebb, mint a listaé, ami kissé gyorsabbá teszi, de nem kell annyit említeni, amíg hatalmas számú elem van.
5.1. Példa: Számítsa ki a List és Tuple méretét
a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())
Kimenet:
a = 104 b = 120
A fenti kódban az a és a b listát ugyanazokkal az elemekkel láttuk el, de a duplája mérete kisebb, mint a lista.
Különböző használati esetek
Első látásra úgy tűnhet, hogy a listák mindig helyettesíthetik a sorokat. De a sorrend rendkívül hasznos adatstruktúra
- A lista helyett egy duplát használva a programozó és a tolmács arra utalhat, hogy az adatokat nem szabad megváltoztatni.
- A tömböket általában kulcsok nélküli szótár megfelelőjeként használják az adatok tárolására. Például,
((„Kardhal”, „Dominic Sena”, 2001), („Snowden”, „Oliver Stone”, 2016), („Taxisofőr”, „Martin Scorsese”, 1976))
A fenti példa a filmek listáját tartalmazó listát tartalmaz. - Az adatok olvasása egyszerűbb, ha a sorokat egy listán tároljuk. Például,
((2,4), (5,7), (3,8), (5,9))
könnyebben olvasható, mint((2,4), (5,7), (3,8), (5,9))
A Tuple kulcsszavaként is használható a szótárban, mivel azok hasábosak és megváltoztathatatlanok, míg a listákat nem használják kulcsként egy szótárban, mert a listák nem kezelhetők __hash__()
és megváltoztatható jellegűek.
key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid
Fontos megjegyezni:
- A sorok szó szerinti szintaxisa zárójelben,
()
míg a listák szó szerinti szintaxisa szögletes zárójelben látható()
. - A listák hossza változó, a duplának fix a hossza.
- A lista megváltoztatható, a duplának változhatatlan jellege van.
- A lista több funkcióval rendelkezik, mint a duplázás.