list vs tuple
list to zmienna sekwencja, którą można modyfikować, a tuple to niezmienna sekwencja, która może być kluczem słownika albo elementem zbioru.
Porównanie w tabeli
#Składnia
Można zmieniać po utworzeniu
Klucz słownika albo element zbioru
Metody modyfikujące (append, sort, …)
Zużycie pamięci i szybkość tworzenia
Typowe użycie
Przykład
#tasks = ["HTML", "CSS"]
tasks.append("JavaScript")
point = (3, 4)
print(tasks)
print(point)
try:
point[0] = 10
except TypeError as error:
print(error)Definicja i zastosowanie
#Obie kolekcje przechowują elementy w ustalonej kolejności i obsługują te same odczytowe operacje: indeksowanie, wycinki, len(), in, pętlę for i rozpakowywanie. Elementy każdej z nich mogą mieć różne typy.
Różni je zmienność. Listę tworzysz nawiasami kwadratowymi i możesz ją modyfikować metodami append(), remove(), sort() i innymi. Krotkę tworzysz nawiasami okrągłymi (krotka jednoelementowa wymaga przecinka: (x,)), a po utworzeniu nie da się jej zmienić: dodać, usunąć ani podmienić elementu. Dzięki niezmienności krotka może być kluczem słownika i elementem zbioru, czego lista nie potrafi.
Gdy dane mają się zmieniać w czasie działania programu, na przykład lista zadań albo wyniki dopisywane w pętli, wybierz list. Gdy dane są z natury stałe, na przykład współrzędne punktu, wiersz z bazy albo wynik funkcji zwracającej kilka wartości naraz, wybierz tuple. Niezmienność bywa też dokumentacją: krotka mówi, że te dane się nie zmienią.
Składnia
#lista = [1, 2, 3]
krotka = (1, 2, 3)Więcej przykładów
#distances = {}
distances[(0, 0)] = 0
distances[(1, 2)] = 5
print(distances)
try:
distances[[1, 2]] = 5
except TypeError as error:
print(type(error).__name__)Lista nie ma skrótu (hash), więc nie może być kluczem. Treść komunikatu błędu zależy od wersji Pythona, typ TypeError jest zawsze ten sam.
list_values = ["Ania", 7]
tuple_values = ("Kuba", 3)
name1, level1 = list_values
name2, level2 = tuple_values
print(name1, level1)
print(name2, level2)Dobre praktyki
#- Funkcja zwracająca kilka wartości (
return a, b) tworzy krotkę. Rozpakujesz ją tak samo jak listę. - Do zamiany między nimi służą funkcje
list()ituple(). - Jeśli lista nigdy nie powinna się zmienić, krotka to także sygnał dla innych programistów, że dane są stałe.
Powiązane hasła
#Widzisz błąd albo brakuje przykładu? Napisz do nas.