U ovom ćemo članku naučiti ključne razlike između Popisa i Tuplesa i kako koristiti ove dvije strukture podataka.
Popisi i korijeni pohranjuju jedan ili više objekata ili vrijednosti u određenom redoslijedu. Objekti pohranjeni na popisu ili naboru mogu biti bilo koje vrste, uključujući tip ništa definiran ključnom riječi None.
Popisi i korijeni slični su u većini konteksta, ali postoje neke razlike koje ćemo pronaći u ovom članku.
Sintaksne razlike
Sintaksa popisa i tuple malo se razlikuje. Popisi su okruženi ()
uglastim zagradama, a Tuple u zagradama ()
.
Primjer 1.1: Stvaranje popisa nasuprot stvaranju tuple
list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)
Izlaz:
(1,2,3,4) (1,2,3,4)
Iznad smo definirali varijablu nazvanu list_num koja sadrži popis brojeva od 1
do 4
. Popis je okružen zagradama ()
. Također, definirali smo varijablu tup_num; koji sadrži korpicu broja od 1
do 4
. Korpa je okružena zagradama ()
.
U pythonu imamo type()
funkciju koja daje vrstu stvorenog objekta.
Primjer 1.2: Pronađite vrstu strukture podataka pomoću funkcije type ()
type(list_num) type(tup_num)
Izlaz:
popis tuple
Promjenjivi popis protiv nepromjenjivih korpica
Popis ima promjenjivu prirodu, tj. Popis se može mijenjati ili mijenjati nakon stvaranja u skladu s potrebama, dok tuple ima nepromjenjivu prirodu, tj. Nabor se ne može mijenjati ili mijenjati nakon stvaranja.
Primjer 2.1: Izmijenite Popis stavki u odnosu na Tuple
list_num(2) = 5 print(list_num) tup_num(2) = 5
Izlaz:
(1,2,5,4) Traceback (najnoviji zadnji poziv): Datoteka "python", red 6, u TypeError: objekt 'tuple' ne podržava dodjelu stavki
U gornjem kodu dodijelili 5
smo listu_broj na indeksu 2
i pronašli smo 5
na indeksu 2
u izlazu. Također, dodijelili 5
smo tup_num na indeksu 2
i dobili smo type error
. Ne možemo modificirati tuple zbog njegove nepromjenjive prirode.
Napomena: Kako je korpica nepromjenjiva, one su fiksne veličine, a popis promjenjive veličine.
Dostupne operacije
Popisi imaju ugrađeniju funkciju više od funkcije tuple. dir((object))
Ugrađenu funkciju možemo koristiti za dobivanje svih povezanih funkcija za popis i tuple.
Primjer 3.1: Imenik popisa
dir(list_num)
Izlaz:
('__add__', '__class__', '__contains__', '__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__', 'dodaj', 'dodaj,' kopiraj ',' broji ',' produži ',' indeks ','umetnuti ',' pop ',' ukloniti ',' preokrenuti ',' sortirati ')
Primjer 3.2: Katalog tuple
dir(tup_num)
Izlaz:
('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__get', __get ', __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ',' __reduce__ ',__ , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')
Jasno možemo vidjeti da postoji toliko mnogo dodatnih funkcionalnosti povezanih s popisom preko korijena. Možemo raditi umetanje i iskakanje, uklanjanje i sortiranje elemenata s popisa s ugrađenim funkcijama koji nisu dostupni u Tupleu.
Usporedba veličina
Operacija korijena ima manju veličinu od one liste, što je čini malo bržom, ali ne toliko za spominjati dok ne dobijete ogroman broj elemenata.
Primjer 5.1: Izračunajte veličinu popisa u odnosu na tuple
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__())
Izlaz:
a = 104 b = 120
U gornjem kodu imamo nabor a i popis b s istim stavkama, ali veličina nabora je manja od popisa.
Slučajevi različite upotrebe
Na prvi pogled može se činiti da popisi uvijek mogu zamijeniti korice. No, korijeni su izuzetno korisne strukture podataka
- Korištenje tuple umjesto popisa programeru i tumaču može dati naslutiti da podatke ne treba mijenjati.
- Korice se obično koriste kao ekvivalent rječnika bez ključeva za pohranu podataka. Na primjer,
(('' Sabljarka '', 'Dominic Sena', 2001.), ('Snowden', 'Oliver Stone', 2016.), ('Taksist', 'Martin Scorsese', 1976.))
Gornji primjer sadrži korice na popisu koji sadrži popis filmova. - Čitanje podataka jednostavnije je kad se korice spremaju na popis. Na primjer,
((2,4), (5,7), (3,8), (5,9))
je lakši za čitanje nego((2,4), (5,7), (3,8), (5,9))
Tuple se također može koristiti kao ključ u rječniku zbog njihove raspršive i nepromjenjive prirode, dok se popisi ne koriste kao ključ u rječniku jer se popis ne može nositi __hash__()
i ima promjenjivu prirodu.
key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid
Ključne točke koje treba zapamtiti:
- Doslovna sintaksa torki prikazana je u zagradama,
()
dok je doslovna sintaksa popisa prikazana u uglastim zagradama()
. - Popisi imaju promjenjivu duljinu, tuple ima fiksnu duljinu.
- Popis ima promjenjivu prirodu, korijen ima nepromjenjivu prirodu.
- Popis ima više funkcionalnosti od korpice.