Lista Pythona a krotki (z przykładami)

W tym artykule poznamy kluczowe różnice między Listą a Krotkami oraz jak używać tych dwóch struktur danych.

Listy i krotki przechowują jeden lub więcej obiektów lub wartości w określonej kolejności. Obiekty przechowywane na liście lub krotce mogą być dowolnego typu, w tym typ none zdefiniowany przez słowo kluczowe None.

Listy i krotki są podobne w większości kontekstów, ale są pewne różnice, które znajdziemy w tym artykule.

Różnice składniowe

Składnia list i tuple jest nieco inna. Listy są otoczone nawiasami kwadratowymi, ()a krotki są otoczone nawiasami ().

Przykład 1.1: Tworzenie listy a tworzenie krotki

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

Wynik:

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

Powyżej zdefiniowaliśmy zmienną o nazwie list_num, która zawiera listę liczb od 1do 4. Lista jest ujęta w nawiasy (). Ponadto zdefiniowaliśmy zmienną tup_num; który zawiera krotkę liczb od 1do 4. Krotka jest otoczona nawiasami ().

W Pythonie mamy type()funkcję, która podaje typ tworzonego obiektu.

Przykład 1.2: Znajdź typ struktury danych za pomocą funkcji type ()

 type(list_num) type(tup_num)

Wynik:

 lista krotka

Lista mutacji a niezmienne krotki

Lista ma charakter zmienny, tj. Lista może być zmieniana lub modyfikowana po jej utworzeniu zgodnie z potrzebami, natomiast krotka ma charakter niezmienny, tj. Krotki nie można zmieniać ani modyfikować po jej utworzeniu.

Przykład 2.1: Modyfikacja listy pozycji a krotka

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

Wynik:

 (1,2,5,4) Traceback (ostatnie wywołanie ostatnie): Plik "python", wiersz 6, w TypeError: obiekt 'tuple' nie obsługuje przypisywania pozycji

W powyższym kodzie przypisaliśmy 5list_num do index 2i znaleźliśmy 5w index 2na wyjściu. Ponadto przypisaliśmy 5tup_num w index 2i otrzymaliśmy type error. Nie możemy modyfikować krotki ze względu na jej niezmienny charakter.

Uwaga: Ponieważ krotka jest niezmienna, ich rozmiar jest stały, a lista jest zmienna.

Dostępne operacje

Listy mają więcej funkcji wbudowanych niż krotka. Możemy użyć dir((object))wbudowanej funkcji, aby uzyskać wszystkie powiązane funkcje dla listy i krotki.

Przykład 3.1: Katalog list

 dir(list_num)

Wynik:

('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__em', '__getattribute__em', '__getattribute__em', __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ', , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', kopiuj ',' licznik ',' rozszerz ',' indeks ','wstaw „,„ pop ”,„ usuń ”,„ odwróć ”,„ sortuj ”)

Przykład 3.2: Katalog krotek

 dir(tup_num)

Wynik:

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

Widzimy wyraźnie, że istnieje wiele dodatkowych funkcji powiązanych z listą w krotce. Możemy wykonywać operacje wstawiania i wyskakiwania, usuwając i sortując elementy listy za pomocą wbudowanych funkcji, które nie są dostępne w krotce.

Porównanie rozmiarów

Operacja krotek ma mniejszy rozmiar niż lista, co sprawia, że ​​jest trochę szybsza, ale nie ma o czym wspominać, dopóki nie masz ogromnej liczby elementów.

Przykład 5.1: Obliczanie rozmiaru listy w porównaniu do krotki

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

Wynik:

 a = 104 b = 120

W powyższym kodzie mamy krotkę a i listę b z tymi samymi pozycjami, ale rozmiar krotki jest mniejszy niż lista.

Różne przypadki użycia

Na pierwszy rzut oka mogłoby się wydawać, że listy zawsze mogą zastąpić krotki. Ale krotki to niezwykle przydatne struktury danych

  1. Użycie krotki zamiast listy może dać programiście i interpreterowi wskazówkę, że dane nie powinny być zmieniane.
  2. Krotki są powszechnie używane jako odpowiednik słownika bez kluczy do przechowywania danych. Na przykład,
     ((„Swordfish”, „Dominic Sena”, 2001), („Snowden”, „Oliver Stone”, 2016), („Taksówkarz”, „Martin Scorsese”, 1976))
    Powyższy przykład zawiera krotki wewnątrz listy, która zawiera listę filmów.
  3. Odczytywanie danych jest prostsze, gdy krotki są przechowywane na liście. Na przykład,
     ((2,4), (5,7), (3,8), (5,9))
    jest łatwiejszy do odczytania niż
     ((2,4), (5,7), (3,8), (5,9))

Krotka może być również używana jako klucz w słowniku ze względu na ich hashable i niezmienną naturę, podczas gdy listy nie są używane jako klucz w słowniku, ponieważ lista nie może obsługiwać __hash__()i ma zmienny charakter.

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

Kluczowe kwestie do zapamiętania:

  1. Literalna składnia krotek jest pokazana w nawiasach, ()podczas gdy składnia literalna list jest pokazana w nawiasach kwadratowych ().
  2. Listy mają zmienną długość, krotka ma stałą długość.
  3. Lista ma charakter zmienny, krotka ma charakter niezmienny.
  4. Lista ma większą funkcjonalność niż krotka.

Interesujące artykuły...