Szybki kontakt




Krotka (ang. tuple) to uporządkowana i niezmienna kolekcja elementów. W języku Python krotki są pisane za pomocą okrągłych nawiasów np. 

>>> wyposażenie = ("miecz", "zbroja", "tarcza")
>>> print(wyposażenie)
('miecz', 'zbroja', 'tarcza')
>>> 

Elementy mogą być też podane bez nawiasów.

>>> wyposażenie = "miecz", "zbroja", "tarcza"
>>> print(wyposażenie)
('miecz', 'zbroja', 'tarcza')
>>> 

Jeśli krotka jest pusta musi zawierać nawiasy.

>>> wyposażenie = ()
>>> print(wyposażenie)
()
>>> 

Jeśli krotka zawiera tylko jeden element, musi być po nim przecinek. Sygnalizujemy w ten sposób, że mamy do czynienia z krotką a nie ciągiem znaków.

>>> wyposażenie = ("miecz",)
>>> print(wyposażenie)
('miecz',)
>>> 

Cechy charakterystyczne krotek:

  • krotki są typem sekwencji podobnie jak łańcuchy znaków
  • w odróżnieniu od łańcuchów, które mogą zawierać tylko znaki, krotki mogą zawierać elementy dowolnego typu
  • krotki są niemutowalne – nie można ich modyfikować
  • dla łatwiejszego zrozumienia, krotkę można wyobrazić sobie jako pojedynczy rekord w bazie danych, który zawiera np. imię, nazwisko, datę urodzenia klienta (dane różnego typu)

Dostęp do elementów krotki możemy uzyskać odwołując się do numeru indeksu. Numer indeksu podajemy w nawiasach kwadratowych

Jako indeksów możemy używać dodatnich i ujemnych liczb całkowitych. Liczby dodatnie oznaczają dostęp do początkowych elementów krotki od zera do ostatniego elementu. Liczby ujemne oznaczają dostęp do końcowych elementów krotki: -1 do pierwszego od końca, -2 do drugiego, i tak dalej. Można zatem odwołać się do wszystkich elementów krotki numerując je od początku lub od końca.

>>> wyposażenie = "miecz", "zbroja", "tarcza"
>>> print(wyposażenie[2])
tarcza
>>>  

W Pythonie krotki są indeksowane od zera. Dlatego powyższy kod zwraca słowo „tarcza”.

Drugi przykład:

>>> wyposażenie = "miecz", "zbroja", "tarcza"
>>> print(wyposażenie[-2])
zbroja
>>> 

Możemy odczytywać wybiórczo zawartość poszczególnych elementów krotki, tak jak w powyższych przykładach, lub całe ciągi elementów. Aby odczytać ciąg elementów w krotce, należy podać numer indeksu, od którego mają zostać odczytane elementy z krotki oraz dwukropek. Wówczas odczytane zostaną wszystkie elementy, zaczynając od wskazanego indeksu aż do końca krotki:

>>> wyposażenie = "miecz", "zbroja", "tarcza"
>>> wyposażenie[1:]
('zbroja', 'tarcza')
>>> 

Możliwe jest też odczytanie co któregoś elementu krotki. W poniższym przykładzie odczytujemy co drugi element:

>>> wyposażenie = "miecz", "zbroja", "tarcza"
>>> print(wyposażenie [::2])
('miecz', 'tarcza')
>>> 

Po utworzeniu krotki nie można zmienić jej wartości. Krotki są niezmienne. Nie można dodawać elementów do krotki ani usuwać z niej elementów.

Za pomocą słowa kluczowego del można jednak całkowicie usunąć krotkę:

>>> wyposażenie = "miecz", "zbroja", "tarcza"
>>> del wyposażenie

Zawartość krotek można sprawdzać. Aby sprawdzić, czy określona wartość znajduje się w krotce, używamy operatora in:

>>> wyposażenie = "miecz", "zbroja", "tarcza"
>>> "miecz" in wyposażenie
True
>>> 

W wyniku otrzymamy wartość logiczną „TRUE” lub „FALSE”.

Drugi przykład:

wyposażenie = "miecz", "zbroja", "tarcza"
if "miecz" in wyposażenie:
	print("Tak, 'miecz' jest w krotce")

Przez elementy krotki możemy przechodzić za pomocą pętli for.

wyposażenie = "miecz", "zbroja", "tarcza"
for x in wyposażenie:
    print(x)

Krotki, podobnie jak listy, można porównywać. Porównywanie krotek odbywa się na zasadzie porównywania poszczególnych elementów:

  • krotki są równe, jeżeli elementy obu krotek są sobie równe
  • krotki są nierówne, jeżeli różnią się choć jednym elementem
  • pierwsza krotka jest większa od drugiej, jeżeli pierwszy element pierwszej krotki jest większy od pierwszego elementu drugiej krotki
  • element nieistniejący jest zawsze mniejszy od każdego innego elementu

Krotki wielopoziomowe

W przypadku krotek wielopoziomowych, które zawierają inne krotki, możliwy jest dostęp do poszczególnych elementów krotek podrzędnych poprzez użycie dwóch indeksów. Jako pierwszy podajemy zawsze indeks krotki wyższego rzędu.

>>> krotka = ((1,2,3,4,5),("tarcza","zbroja","miecz","hełm"))
>>> krotka [1][0];krotka [0][2]
'tarcza'
3
>>> 

Dostępne metody krotki:

>>> dir(())
['__add__', '__class__', '__contains__', '__delattr__', '__dir__',
'__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
'__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__',
'__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__','__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__rmul__', '__setattr__','__sizeof__',
'__str__', '__subclasshook__', 'count', 'index']
>>> 

Wydrukowanie liczby elementów w krotce:

>>> wyposażenie = ("miecz", "zbroja", "tarcza")
>>> print(len(wyposażenie))
3
>>> 

Konstruktor krotki

Możliwe jest również użycie konstruktora tuple() do utworzenia krotki.

>>> wyposażenie = tuple(("miecz", "zbroja", "tarcza"))
>>> print(wyposażenie)
('miecz', 'zbroja', 'tarcza')
>>> 

Informacje na temat list znajdziesz w artykule Python lista

Dodaj komentarz

Twój adres email nie zostanie opublikowany.