Seznam Pythonu vs. Tice (s příklady)

V tomto článku se naučíme klíčové rozdíly mezi List a Tuples a jak používat tyto dvě datové struktury.

Seznamy a n-tice ukládají jeden nebo více objektů nebo hodnot v určitém pořadí. Objekty uložené v seznamu nebo n-tici mohou být jakéhokoli typu, včetně typu nic definovaného klíčovým slovem Žádné.

Seznamy a n-tice jsou si ve většině kontextů podobné, ale existují určité rozdíly, které v tomto článku najdeme.

Rozdíly v syntaxi

Syntaxe seznamu a n-tice se mírně liší. Seznamy jsou obklopeny hranatými závorkami ()a n-tice jsou obklopeny závorkami ().

Příklad 1.1: Vytvoření seznamu vs. Vytvoření n-tice

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

Výstup:

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

Nahoře jsme definovali proměnnou nazvanou list_num, která obsahuje seznam čísel od 1do 4. Seznam je ohraničen závorkami (). Také jsme definovali proměnnou tup_num; který obsahuje n-tici čísla od 1do 4. N-tice je obklopena závorkami ().

V pythonu máme type()funkci, která udává typ vytvořeného objektu.

Příklad 1.2: Najděte typ datové struktury pomocí funkce type ()

 type(list_num) type(tup_num)

Výstup:

 seznam n-tice

Mutable List vs Immutable Tuples

Seznam má proměnlivou povahu, tj. Seznam lze po vytvoření změnit nebo upravit podle potřeb, zatímco n-tice má neměnnou povahu, tj. N-tici nelze po vytvoření změnit ani upravit.

Příklad 2.1: Upravit položku Seznam vs. Tuple

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

Výstup:

 (1,2,5,4) Traceback (poslední hovor poslední): Soubor "python", řádek 6, v TypeError: objekt 'tuple' nepodporuje přiřazení položky

Ve výše uvedeném kódu jsme přiřadili 5list_num v indexu 2a našli jsme 5index 2v výstupu. Také jsme přiřadili 5tup_num v indexu 2a dostali jsme type error. Ticiu nemůžeme upravit kvůli její neměnné povaze.

Poznámka: Jelikož je n-tice neměnná, mají pevnou velikost a velikost seznamu je proměnlivá.

Dostupné operace

Seznamy mají více vestavěné funkce než funkce n-tice. Můžeme použít dir((object))vestavěnou funkci k získání všech přidružených funkcí pro seznam a n-tici.

Příklad 3.1: Seznam adresářů

 dir(list_num)

Výstup:

('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit____,' __getitem__ __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__', 'připojit', 'vymazat copy ',' count ',' extend ',' index ','insert ',' pop ',' remove ',' reverse ',' sort ')

Příklad 3.2: Tuple Directory

 dir(tup_num)

Výstup:

 ('__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')

Jasně vidíme, že se seznamem přes n-tici je spojeno tolik dalších funkcí. Můžeme provést operaci vkládání a vyskakování, odebírání a třídění prvků v seznamu pomocí vestavěných funkcí, které v Tuple nejsou k dispozici.

Porovnání velikosti

Operace Tuples má menší velikost než seznam, což je o něco rychlejší, ale není toho tolik, o čem bychom se zmínili, dokud nebudete mít obrovské množství prvků.

Příklad 5.1: Vypočítejte velikost List vs. 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ýstup:

 a = 104 b = 120

Ve výše uvedeném kódu máme n-tici a seznam b se stejnými položkami, ale velikost n-tice je menší než seznam.

Různé případy použití

Na první pohled by se mohlo zdát, že seznamy mohou vždy nahradit n-tice. Ale n-tice jsou nesmírně užitečné datové struktury

  1. Použití n-tice místo seznamu může dát programátorovi a tlumočníkovi náznak, že data by se neměla měnit.
  2. Tice se běžně používají jako ekvivalent slovníku bez klíčů k ukládání dat. Například,
     (('Mečoun', 'Dominic Sena', 2001), ('Snowden', 'Oliver Stone', 2016), ('Taxikář', 'Martin Scorsese', 1976))
    Výše uvedený příklad obsahuje n-tice uvnitř seznamu, který obsahuje seznam filmů.
  3. Čtení dat je jednodušší, když jsou n-tice uloženy uvnitř seznamu. Například,
     ((2,4), (5,7), (3,8), (5,9))
    je čitelnější než
     ((2,4), (5,7), (3,8), (5,9))

Tuple lze také použít jako klíč ve slovníku kvůli jeho hashovatelné a neměnné povaze, zatímco Seznamy se nepoužívají jako klíč ve slovníku, protože seznam nedokáže zpracovat __hash__()a má proměnlivou povahu.

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

Klíčové body k zapamatování:

  1. Doslovná syntaxe n-tic je uvedena v závorkách, ()zatímco doslovná syntaxe seznamů je uvedena v hranatých závorkách ().
  2. Seznamy mají proměnnou délku, n-tice má pevnou délku.
  3. Seznam má proměnlivou povahu, n-tice má neměnnou povahu.
  4. Seznam má více funkcí než n-tice.

Zajímavé články...