Python List vs Tuples (z primeri)

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 1do 4. Seznam je obdan z oklepaji (). Določili smo tudi spremenljivko tup_num; ki vsebuje nabor števil od od 1do 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 5pri indeksu dodelili list_num 2in v izhodu našli 5indeks 2. Prav tako smo 5pri indeksu dodelili tup_num 2in 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

  1. Uporaba nabora namesto seznama lahko programerju in tolmaču namigne, da podatkov ne bi smeli spreminjati.
  2. 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.
  3. 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:

  1. Dobesedna sintaksa nabora je prikazana v oklepajih, ()dobesedna skladnja seznamov pa v oglatih oklepajih ().
  2. Seznami imajo spremenljivo dolžino, nabor ima fiksno dolžino.
  3. Seznam ima spremenljivo naravo, tuple ima nespremenljivo naravo.
  4. Seznam ima več funkcij kot nabor.

Zanimive Članki...