Różnica między listą a krotką w Pythonie

Listy i krotki w Pythonie to dwie klasy struktur danych Pythona. Struktura listy jest dynamiczna i można ją łatwo zmienić, podczas gdy struktura krotki jest statyczna i nie można jej zmienić. Oznacza to, że krotka jest generalnie szybsza niż lista. Listy są oznaczane nawiasami kwadratowymi, a krotki nawiasami.

Różnice między listą a krotką w Pythonie

Sno

LISTA

KRÓTKA

1 Listy Czy zmienny Krotki są niezmienne
2 Konsekwencje iteracji są czasochłonne Implikacja iteracji jest stosunkowo szybsza
3 Lista lepiej nadaje się do wykonywania operacji, takich jak wstawianie i usuwanie. Typ danych Tuple jest odpowiedni do uzyskiwania dostępu do elementów
4 Listy zużywają więcej pamięci Krotka zużywa mniej pamięci w porównaniu do listy
5 Listy mają kilka wbudowanych metod Tuple nie ma wielu wbudowanych metod.
6 Większe jest prawdopodobieństwo wystąpienia nieoczekiwanych zmian i błędów Ponieważ krotki się nie zmieniają, są znacznie mniej podatne na błędy.

Lista Pythona a krotka Pythona

Sprawdź, czy krotki są niezmienne, a listy są zmienne

Tutaj porównamy testy zmienności list i krotek.

Python3
# Creating a List with # the use of Numbers # code to test that tuples are mutable List = [1, 2, 4, 4, 3, 3, 3, 6, 5] print('Original list ', List) List[3] = 77 print('Example to show mutability ', List) 

Wyjście
Original list [1, 2, 4, 4, 3, 3, 3, 6, 5] Example to show mutability [1, 2, 4, 77, 3, 3, 3, 6, 5] 

Możemy zobaczyć tutaj krotka nie można modyfikować.

Python3
# code to test that tuples are immutable tuple1 = (0, 1, 2, 3) tuple1[0] = 4 print(tuple1) 

Wyjście:

Traceback (most recent call last):  File 'e0eaddff843a8695575daec34506f126.py', line 3, in  tuple1[0]=4 TypeError: 'tuple' object does not support item assignment 

Która jest lepsza lista lub krotka w Pythonie?

Aby przetestować tę odpowiedź, wykonajmy kilka operacji na krotce Pythona i liście Pythona. Dzięki temu będziemy mogli lepiej zorientować się, która lista lub krotka jest lepsza w Pythonie.

Sprawdź, czy krotki oszczędzają pamięć

Ponieważ krotki są przechowywane w jednym bloku pamięci, nie wymagają dodatkowej przestrzeni na nowe obiekty, natomiast listy są przydzielane w dwóch blokach, pierwszym stałym ze wszystkimi Pyton informacje o obiekcie, a po drugie blok danych o zmiennym rozmiarze.

Python3
import sys a_list = [] a_tuple = () a_list = ['Geeks', 'For', 'Geeks'] a_tuple = ('Geeks', 'For', 'Geeks') print(sys.getsizeof(a_list)) print(sys.getsizeof(a_tuple)) 

Wyjście
96 80 

Sprawdź, czy implikacje iteracji są stosunkowo szybsze w krotkach

Ponieważ krotki są przechowywane w jednym bloku pamięci, nie wymagają dodatkowej przestrzeni dla nowych obiektów, ponieważ są niezmienne, natomiast listy są przydzielane w dwóch blokach, pierwszym stałym ze wszystkimi Pyton informacje o obiekcie, a po drugie blok danych o zmiennym rozmiarze, co czyni je jeszcze szybszymi.

Python3
# code import sys, platform import time l=list(range(100000001)) t=tuple(range(100000001)) start = time.time_ns() for i in range(len(t)): a = t[i] end = time.time_ns() print('Total lookup time for Tuple: ', end - start) start = time.time_ns() for i in range(len(l)): a = l[i] end = time.time_ns() print('Total lookup time for LIST: ', end - start) 

Wyjście

Total lookup time for Tuple: 7038208700 Total lookup time for LIST: 19646516700 

Lista zmienna a niezmienne krotki

W Pyton , zarówno listy, jak i krotki obsługują szereg operacji, w tym indeksowanie, wycinanie, łączenie i inne. Istnieją jednak pewne różnice pomiędzy operacjami dostępnymi dla list i krotek, ze względu na ich zmienność i niezmienność.

Indeksowanie Pythona

Zarówno listy, jak i krotki umożliwiają dostęp do poszczególnych elementów za pomocą ich indeksu, zaczynając od 0.

Python3
my_list = [1, 2, 3] my_tuple = (4, 5, 6) print(my_list[0]) # Output: 1 print(my_tuple[1]) # Output: 5 

Wyjście
1 5 

Krojenie Pythona

Zarówno listy, jak i krotki umożliwiają wyodrębnienie podzbioru elementów za pomocą cięcia.

Python3
my_list = [1, 2, 3, 4, 5] my_tuple = (6, 7, 8, 9, 10) print(my_list[1:3]) # Output: [2, 3] print(my_tuple[:3]) # Output: (6, 7, 8) 

Wyjście
[2, 3] (6, 7, 8) 

Konkatenacja Pythona

Zarówno listy, jak i krotki można łączyć za pomocą operatora +.

Python3
list1 = [1, 2, 3] list2 = [4, 5, 6] tuple1 = (7, 8, 9) tuple2 = (10, 11, 12) print(list1 + list2) # Output: [1, 2, 3, 4, 5, 6] print(tuple1 + tuple2) # Output: (7, 8, 9, 10, 11, 12) 

Wyjście
[1, 2, 3, 4, 5, 6] (7, 8, 9, 10, 11, 12) 

Notatka - Istnieją jednak pewne operacje, które są dostępne tylko dla list ze względu na ich zmienność.

Dołącz Pythona

Do list można dodawać nowe elementy za pomocą metody append().

Python3
my_list = [1, 2, 3] my_list.append(4) print(my_list) # Output: [1, 2, 3, 4] 

Wyjście
[1, 2, 3, 4] 

Rozszerzenie Pythona

Listy można także rozszerzyć o inną listę za pomocą metody Extend().

Python3
list1 = [1, 2, 3] list2 = [4, 5, 6] list1.extend(list2) print(list1) # Output: [1, 2, 3, 4, 5, 6] 

Wyjście
[1, 2, 3, 4, 5, 6] 

Usuń Pythona

Listy można usunąć elementy za pomocą metody usuwania().

Python3
my_list = [1, 2, 3, 4] my_list.remove(2) print(my_list) # Output: [1, 3, 4] 

Wyjście
[1, 3, 4] 

Kiedy używać krotek zamiast list?

W Pyton Zarówno krotki, jak i listy służą do przechowywania kolekcji danych, ale istnieją między nimi pewne istotne różnice. Oto kilka sytuacji, w których możesz chcieć użyć krotek zamiast list:

Niezmienne dane Krotki są niezmienne, zatem po ich wygenerowaniu nie można zmienić ich zawartości. To sprawia, że ​​krotki są odpowiednią opcją do przechowywania informacji, które nie powinny się zmieniać, takich jak ustawienia konfiguracyjne, stałe wartości lub inne informacje, które powinny pozostać takie same podczas działania programu.

Wydajność Krotki są lżejsze niż listy i mogą być szybsze w generowaniu, uzyskiwaniu dostępu i iterowaniu, ponieważ są niezmienne. Użycie krotki może być bardziej efektywne niż użycie krotki lista jeśli masz ogromny zbiór danych, które musisz przechowywać, odzyskiwać i regularnie wykorzystywać, a dane te nie muszą być zmieniane.

Integralność danych - Zapewniając spójność struktury i zawartości danych, można zastosować krotki w celu zapewnienia integralności danych. Aby upewnić się, że wywołujący wie, ile danych może się spodziewać, na przykład w przypadku funkcji zwroty określoną liczbę wartości, możesz chcieć zwrócić je jako krotkę, a nie listę.