V tem članku se bomo naučili ključnih razlik med seznamom in nabori ter kako uporabiti ti dve podatkovni strukturi.
Seznami in zbirke shranjujejo enega ali več predmetov ali vrednosti v določenem vrstnem redu. Predmeti, shranjeni na seznamu ali naboru, so lahko katere koli vrste, vključno z vrsto nič, ki jo določa Brez besede.
Seznami in nabori so si v večini konteksta podobni, vendar bomo v tem članku našli nekaj razlik.
Sintaksne razlike
Sintaksa seznama in nabora se nekoliko razlikuje. Seznami so obdani z oglati oklepaji, ()
Tuple pa v oklepajih ()
.
Primer 1.1: Ustvarjanje seznama v primerjavi z ustvarjanjem tuple
list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)
Izhod:
(1,2,3,4) (1,2,3,4)
Zgoraj smo definirali spremenljivko, imenovano list_num, ki vsebuje seznam številk od 1
do 4
. Seznam je obdan z oklepaji ()
. Določili smo tudi spremenljivko tup_num; ki vsebuje nabor števil od od 1
do 4
. Torta je obdana z oklepaji ()
.
V pythonu imamo type()
funkcijo, ki poda vrsto ustvarjenega predmeta.
Primer 1.2: Poiščite vrsto podatkovne strukture s funkcijo type ()
type(list_num) type(tup_num)
Izhod:
seznam tuple
Spremenljiv seznam vs nespremenljivi nabori
Seznam ima spremenljivo naravo, tj. Seznam je mogoče po njegovem ustvarjanju spremeniti ali spremeniti glede na potrebe, medtem ko ima nabor nespremenljivo naravo, tj. Po njegovi izdelavi ni mogoče spremeniti ali spremeniti.
Primer 2.1: Spremenite seznam elementov v primerjavi z Tuple
list_num(2) = 5 print(list_num) tup_num(2) = 5
Izhod:
(1,2,5,4) Sledenje (zadnji zadnji klic): Datoteka "python", vrstica 6, v TypeError: objekt 'tuple' ne podpira dodelitve elementov
V zgornji kodi smo 5
pri indeksu dodelili list_num 2
in v izhodu našli 5
indeks 2
. Prav tako smo 5
pri indeksu dodelili tup_num 2
in dobili smo type error
. Torta zaradi njegove nespremenljive narave ne moremo spremeniti.
Opomba: Ker je nabor nespremenljiv, so ti določeni po velikosti, seznam pa po spremenljivi velikosti.
Razpoložljive operacije
Seznami imajo bolj vgrajeno funkcijo kot funkcija tuple. Z dir((object))
vgrajeno funkcijo lahko dobimo vse povezane funkcije za seznam in tuple.
Primer 3.1: Seznam imenikov
dir(list_num)
Izhod:
('__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__ ',' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'append', 'append,' copy ',' count ',' extension ',' index ','vstavi ',' pop ',' odstrani ',' obrni ',' razvrsti ')
Primer 3.2: Imenik Tuple
dir(tup_num)
Izhod:
('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__get' ,__ __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ', ____ , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')
Jasno lahko vidimo, da je s seznamom v povezavi s toplem povezanih toliko dodatnih funkcij. Lahko izvajamo vstavljanje in pojavljanje, odstranjevanje in razvrščanje elementov na seznamu z vgrajenimi funkcijami, ki v Tupleju ni na voljo.
Primerjava velikosti
Operacija Tuples ima manjšo velikost kot pri seznamu, zaradi česar je nekoliko hitrejša, vendar ne toliko za omeniti, dokler ne dobite ogromnega števila elementov.
Primer 5.1: Izračunajte velikost seznama v primerjavi z 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__())
Izhod:
a = 104 b = 120
V zgornji kodi imamo nabor a in seznam b z enakimi elementi, vendar je velikost nabora manjša od seznama.
Različni primeri uporabe
Na prvi pogled se zdi, da lahko seznami vedno nadomestijo korice. Toda korice so izjemno koristne podatkovne strukture
- Uporaba nabora namesto seznama lahko programerju in tolmaču namigne, da podatkov ne bi smeli spreminjati.
- Tuple se običajno uporabljajo kot ekvivalent slovarja brez ključev za shranjevanje podatkov. Na primer,
(('' Meč '', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taksist', 'Martin Scorsese', 1976)
Zgornji primer vsebuje naborke znotraj seznama, ki vsebuje seznam filmov. - Branje podatkov je enostavnejše, če so nabori shranjeni na seznamu. Na primer
((2,4), (5,7), (3,8), (5,9))
je lažje brati kot((2,4), (5,7), (3,8), (5,9))
Tuple se lahko uporablja tudi kot ključ v slovarju zaradi njihove razpršljive in nespremenljive narave, medtem ko se seznami ne uporabljajo kot ključ v slovarju, ker seznam ne more obdelovati __hash__()
in ga je mogoče spremeniti.
key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid
Ključne točke, ki si jih je treba zapomniti:
- Dobesedna sintaksa nabora je prikazana v oklepajih,
()
dobesedna skladnja seznamov pa v oglatih oklepajih()
. - Seznami imajo spremenljivo dolžino, nabor ima fiksno dolžino.
- Seznam ima spremenljivo naravo, tuple ima nespremenljivo naravo.
- Seznam ima več funkcij kot nabor.