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:
unikalny klucz mysql
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.
Java przerwała pętlę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().
jak sprawdzić rozmiar ekranuPython3
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ę.