Zoznam Python vs. Tuples (s príkladmi)

V tomto článku sa dozvieme kľúčové rozdiely medzi zoznamom a n-ticami a ako tieto dve dátové štruktúry používať.

Zoznamy a n-tice ukladajú jeden alebo viac objektov alebo hodnôt v konkrétnom poradí. Objekty uložené v zozname alebo n-tici môžu byť ľubovoľného typu vrátane typu nič definovaného v kľúčovom slove Žiadne.

Zoznamy a n-tice sú si vo väčšine kontextu podobné, existujú však určité rozdiely, ktoré v tomto článku nájdeme.

Rozdiely v syntaxi

Syntax zoznamu a n-tice sa mierne líši. Zoznamy sú obklopené hranatými zátvorkami ()a n-tice sú obklopené zátvorkami ().

Príklad 1.1: Vytvorenie zoznamu oproti vytvoreniu Tuple

 list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)

Výkon:

 (1,2,3,4) (1,2,3,4)

Vyššie sme definovali premennú nazvanú list_num, ktorá obsahuje zoznam čísel od 1do 4. Zoznam je obklopený zátvorkami (). Definovali sme tiež premennú tup_num; ktorý obsahuje n-ticu čísla od 1do 4. N-tica je obklopená zátvorkou ().

V pythone máme type()funkciu, ktorá udáva typ vytvoreného objektu.

Príklad 1.2: Vyhľadajte typ dátovej štruktúry pomocou funkcie type ()

 type(list_num) type(tup_num)

Výkon:

 zoznamová n-tica

Premenlivý zoznam vs Nezmeniteľné n-tice

Zoznam má premenlivú povahu, tj zoznam je možné po vytvorení meniť alebo upravovať podľa potreby, zatiaľ čo n-tica má nemennú povahu, tj po jej vytvorení nie je možné meniť ani upravovať n-ticu.

Príklad 2.1: Upravte Zoznam položiek vs. Tuple

 list_num(2) = 5 print(list_num) tup_num(2) = 5

Výkon:

 (1,2,5,4) Traceback (posledný hovor posledný): Súbor "python", riadok 6, v TypeError: objekt 'tuple' nepodporuje priradenie položky

Vo vyššie uvedenom kóde sme priradili 5list_num pri indexe 2a našli sme 5index 2pri výstupe. Tiež sme priradili 5tup_num v indexe 2a dostali sme sa type error. T-tiku nemôžeme upraviť kvôli jej nemennej povahe.

Poznámka: Pretože je n-tica nemenná, majú pevnú veľkosť a veľkosť zoznamu je premenlivá.

Dostupné operácie

Zoznamy majú zabudovanejšiu funkciu ako n-tica. Môžeme použiť dir((object))vstavanú funkciu na získanie všetkých súvisiacich funkcií pre zoznam a n-ticu.

Príklad 3.1: Zoznam adresárov

 dir(list_num)

Výkon:

('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit__ __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__', 'app' ',' clear copy ',' count ',' extend ',' index ','vložiť ',' pop ',' odstrániť ',' obrátiť ',' triediť ')

Príklad 3.2: Tuple Directory

 dir(tup_num)

Výkon:

 ('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewar __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ',' __red , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')

Jasne vidíme, že so zoznamom cez n-ticu je spojených toľko ďalších funkcií. Môžeme vykonať operáciu vkladania a vyskakovania, odstraňovanie a triedenie prvkov v zozname pomocou vstavaných funkcií, ktoré v Tuple nie sú k dispozícii.

Porovnanie veľkosti

Operácia n-tic má menšiu veľkosť ako operácia zoznamu, čo ju robí o niečo rýchlejšou, ale nie až takou zmienkou, kým nebudete mať obrovské množstvo prvkov.

Príklad 5.1: Vypočítajte veľkosť Zoznamu a 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__())

Výkon:

 a = 104 b = 120

Vo vyššie uvedenom kóde máme n-ticu a zoznam b s rovnakými položkami, ale veľkosť n-tice je menšia ako zoznam.

Prípady rôznych použití

Na prvý pohľad by sa mohlo zdať, že zoznamy môžu vždy nahradiť n-tice. Ale n-tice sú mimoriadne užitočné dátové štruktúry

  1. Použitie n-tice namiesto zoznamu môže programátorovi a tlmočníkovi naznačiť, že údaje by sa nemali meniť.
  2. N-tice sa bežne používajú ako ekvivalent slovníka bez kľúčov na ukladanie údajov. Napríklad,
     ((„Mečiar“, „Dominic Sena“, 2001), („Snowden“, „Oliver Stone“, 2016), („Taxikár“, „Martin Scorsese“, 1976))
    Vyššie uvedený príklad obsahuje n-tice vo vnútri zoznamu, ktorý obsahuje zoznam filmov.
  3. Čítanie údajov je jednoduchšie, keď sú n-tice uložené v zozname. Napríklad,
     ((2,4), (5,7), (3,8), (5,9))
    je ľahšie čitateľný ako
     ((2,4), (5,7), (3,8), (5,9))

Tuple možno tiež použiť ako kľúč v slovníku kvôli ich hašovateľnej a nemennej povahe, zatiaľ čo Zoznamy sa nepoužívajú ako kľúč v slovníku, pretože zoznam nedokáže spracovať __hash__()a má premenlivú povahu.

 key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid 

Kľúčové body, ktoré treba pamätať:

  1. Doslovná syntax n-tíc je uvedená v zátvorkách, ()zatiaľ čo doslovná syntax zoznamov je uvedená v hranatých zátvorkách ().
  2. Zoznamy majú premenlivú dĺžku, n-tica má pevnú dĺžku.
  3. Zoznam má premenlivú povahu, n-tica má nemennú povahu.
  4. Zoznam má viac funkcií ako n-tica.

Zaujímavé články...