Zanurkuj w Pythonie/Krotki
Krotki
edytujKrotka (ang. tuple) jest niezmienną listą. Zawartość krotki określamy tylko podczas jej tworzenia. Potem nie możemy już jej zmienić.
Przykład. Definiowanie krotki
>>> t = ("a", "b", "mpilgrim", "z", "element") #(1) >>> t ('a', 'b', 'mpilgrim', 'z', 'element') >>> t[0] #(2) 'a' >>> t[-1] #(3) 'element' >>> t[1:3] #(4) ('b', 'mpilgrim')
- Krotki definiujemy w identyczny sposób jak listę, lecz z jednym wyjątkiem -- zbiór elementów jest ograniczony w nawiasach okrągłych, zamiast w kwadratowych.
- Podobnie jak w listach, elementy w krotce mają określony porządek. Są one indeksowane od
0
, więc pierwszym elementem w niepustej krotce jest zawszet[0]
. - Ujemne indeksy idą od końca krotki, tak samo jak w listach.
- Krotki także można wycinać. Kiedy wycinamy listę, dostajemy nową listę. Podobnie, gdy wycinamy krotkę dostajemy nową krotkę.
Przykład. Krotki posiadają mniej metod niż listy
>>> t ('a', 'b', 'mpilgrim', 'z', 'element') >>> t.append("nowy") #(1) Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'tuple' object has no attribute 'append' >>> t.remove("z") #(2) Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'tuple' object has no attribute 'remove' >>> t.index("z") #(3) 3 >>> "z" in t #(4) True
- Nie można dodawać elementów do krotki. Krotki nie posiadają metod typu
append
, czy teżextend
. - Nie można usuwać elementów z krotki. Nie posiadają one ani metody
remove
ani metodypop
. - Można wyszukiwać elementy w krotce wykorzystując metodę
index
. - Można wykorzystać operator
in
, aby sprawdzić, czy krotka zawiera dany element.
To w końcu do czego są te krotki przydatne?
- Krotki działają szybciej niż listy. Jeśli definiujemy stały zbiór wartości, który będzie używany tylko do iteracji, skorzystajmy z krotek zamiast z listy.
- Jeśli chcielibyśmy używać danych "zabezpieczonych przed zapisem" (np. po to, żeby program był bezpieczniejszy), wykorzystajmy do tego krotki. Korzystając z krotek, zamiast z list, mamy pewność, że dane w nich zawarte nie zostaną nigdzie zmienione. To trochę tak, jakbyśmy mieli gdzieś ukrytą instrukcję
assert
sprawdzającą, czy dane są stałe. W przypadku, gdy nastąpi próba nadpisania pewnych wartości w krotce, program zwróci wyjątek. - Pamiętasz, jak powiedzieliśmy, że klucze w słowniku mogą być łańcuchami znaków, liczbami całkowitymi i "kilkoma innymi typami"? Krotki są jednym z tych "innych typów". W przeciwieństwie do list, mogą one zostać użyte jako klucz w słowniku. Dlaczego? Jest to dosyć skomplikowane. Klucze w słowniku muszą być niezmienne. Krotki same w sobie są niezmienne, jednak jeśli wewnątrz krotki znajdzie się lista, to krotka ta nie będzie mogła zostać użyta jako klucz, ponieważ lista jest zmienna. W takim przypadku krotka nie byłaby słownikowo-bezpieczna. Aby krotka mogła zostać wykorzystana jako klucz, musi ona zawierać wyłącznie łańcuchy znaków, liczby i inne słownikowo-bezpieczne krotki.
- Krotki używane są do formatowania tekstu, co zobaczymy wkrótce.
Krotki mogą zostać w łatwy sposób przekonwertowane na listy. Wbudowana funkcja tuple , której argumentem jest lista, zwraca krotkę z takimi samymi elementami, natomiast funkcja list , której argumentem jest krotka, zwraca listę. W rezultacie tuple zamraża listę, a list odmraża krotkę.
|