Ta strona wykorzystuje ciasteczka ("cookies") w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Czy wyrażasz na to zgodę?

Czytaj więcej
< All Topics
Print

Krotki

Tworzenie krotek

 

Niektórym nazwa ‘krotki’ nie podoba się i zastępują ją inną oznaczającą skończony ciąg elementów. Nie ma jednak innego, właściwego tłumaczenia słowa Tuple – typu danych podobnego do listy, ale innego. Krotki (słowo utworzone od słowa krotność) cechuje się tym, że wiele operacji zmieniających długość, wartości elementów lub właściwości krotek nie jest na nich wykonalnych. Stąd też większa szybkość programów działających na krotkach zamiast listach oraz większe bezpieczeństwo.

Krotki tworzone są jako zestaw elementów objętych nawiasami okrągłymi lub wcale bez nawiasów.

krot1=('a','b','e','c','a','d','ł','o')
krot2='a','b','e','c','a','d','ł','o'
print(krot1)
print(krot2)
print(krot1==krot2)
>>>	
('a', 'b', 'e', 'c', 'a', 'd', 'ł', 'o')
('a', 'b', 'e', 'c', 'a', 'd', 'ł', 'o')
True

Krotka może być także pusta lub jednoelementowa.

krot1=()
krot2=('a',)
krot3='a',
print(krot1,"\n",krot2,"\n",krot3)
>>>
() 
('a',) 
('a',)

Utworzenie krotki jednoelementowej wymaga postawienia przecinka przed końcowym nawiasem (o ile używany jest nawias). Nie dotyczy to krotek wieloargumentowych, choć przecinek na końcu nie przeszkadza.

Krotki mogą być zagnieżdżone.

krot1=(1,2,3,4,5)
krot2=('a', 'b', 'c', 'd')
krot3=(krot1, krot2)
print(krot3)
>>>
((1, 2, 3, 4, 5), ('a', 'b', 'c', 'd'))

Mogą istnieć listy krotek i krotki list.

krot1=(1,2,3,4,5)
krot2=('a', 'b', 'c', 'd')
lista=[krot1, krot2]
print(lista)
list1=[1,2,3,4,5]
list2=['a', 'b', 'c', 'd']
krotka=(list1, list2)
print(krotka)
>>>
[(1, 2, 3, 4, 5), ('a', 'b', 'c', 'd')]
>>>
([1, 2, 3, 4, 5], ['a', 'b', 'c', 'd'])

 

Odwołanie się do wybranych elementów krotek

 

Obiekty krotek można oglądać poprzez indeksy.

krot=1,2,3,4,5,6,7,8
print(krot[0])
print(krot[1:3])
print(krot[-3:-1])
print(krot[:5])
>>>
1
(2, 3)
(6, 7)
(1, 2, 3, 4, 5)

 

 

Edycja krotek

 

Próba edycji przez zmianę elementu wyciągniętego przez odwołanie, wywołuje błąd.

krot=1,2,3,4,5,6,7,8
krot[0]=10
print(krot)
>>>
Traceback (most recent call last):
    File "C:\Users\User\OneDrive\Pulpit\A.py", line 6, in
        krot[0]=10
TypeError: 'tuple' object does not support item assignment

Żeby edytować krotkę trzeba ją rozpakować na poszczególne elementy. Wygląda to następująco:

krotka=(1,2,3,4,5,6,7,8)
a0,a1,a2,a3,a4,a5,a6,a7 = krotka
a0=10
krotka= (a0,a1,a2,a3,a4, a5, a6)
print(krotka)
>>>
(10, 2, 3, 4, 5, 6, 7)

Można także zamienić krotkę na listę za pomocą funkcji ‘list()’, dokonać zamiany wartości wybranego elementu i zamienić listę na krotkę za pomoca funkcji ‘tuple()’.

krotka=(1,2,3,4,5,6,7,8)
lista=list(krotka)
lista[0]=10
krotka=tuple(lista)
print(krotka)
>>>
(10, 2, 3, 4, 5, 6, 7)

Wymaga to trochę pracy i raczej nie zrobi się tego przez przypadek.

 

 

Działania na krotkach

 

Operacje, które można wykonać na krotkach, to działania łączenia krotek znakiem + i ich powielanie znakiem *. Można w ten sposób zastępować krotkę wynikiem takiej operacji.

krot1=(0,1,2,3,4,5)
krot2=5,4,3,2,1,0
print(krot1 + krot2)
print(3*krot1)
>>>
(0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1, 0)
(0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)

 

 

Relacje między krotkami

 

Relacja ‘in’ sprawdza czy element z lewej strony należy do krotki.

krot=(0,1,2,3,4,5)
print(3 in krot)
print(7 in krot)
>>>
True
False

Relacja ‘==’ oraz ‘is’ sprawdzają czy krotki są identyczne. W nowych wersjach ‘is’ uznaje się za przestarzałe

krot1=krot2=(0,1,2,3,4,5)
krot3=(0,1,2,3,4)
print(krot1==krot2)
print(krot1==krot3)
>>>
True
False

Relacje ‘<‘, ‘<=’, ‘>’, ‘>=’ oceniają prawdziwość relacji dla pierwszej pary z tych samych pozycji, których elementy różnią się od siebie.

krot1=krot2=(0,1,2,3,4,5)
krot3=(0,1,2,3,4,6)
print(krot1<krot2, krot1<=krot2, krot1>krot2, krot1>=krot2)
print(krot1<krot3,krot1<=krot3,krot1>krot3,krot1>=krot3)
>>>
False True False True
True True False False

 

 

Metody działające na krotkach

 

Metodą ‘index’ możemy wykryć pozycję pierwszego pojawienia się w krotce określonego elementu. Gdy element ten nie istnieje generowany jest błąd. Dlatego lepiej jest najpierw sprawdzić za pomocą relacji ‘in’ czy jest on w krotce.

krot=(0,1,2,3,4,5,4,3,2,1,2,3,4,5)
n=krot.index(5)
print(n)
>>>
5

Metoda ‘count’ możemy policzyć ile razy w krotce występuje określony element.

krot=(0,1,2,3,4,5,4,3,2,1,2,3,4,5)
n=krot.count(5)
print(n)
>>>
2

Nie działają natomiast na krotki takie metody jak ‘append’, ‘insert’, ‘expand’ oraz wszystkie zmieniająca zawartość krotki. Ich zastosowanie wymaga zmiany krotki na listę, wykonanie działania i zamiany listy na krotkę.

krot=(0,1,2,3,4,5,4,3,2,1,2,3,4,5)
print(krot)
prot=list(krot)
prot.sort()
print(prot)
krot=tuple(prot)
print(krot)
>>>
(0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5)
[0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5]
(0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5)

To jedyny sposób by zmienić automatycznie kolejność elementów krotki.

 

 

Funkcje działające na krotkach

 

Funkcja ‘len()’ oblicza liczbę elementów krotki.

krot1=(0,1,2,3,4,5,4,3,2,1,2,3,4,5)
krot2=((0,1,2),(3,4,5),(4,3,2),(1,2,3,4,5))
print(len(krot1))
print(len(krot2))
>>>
14
4

Funkcja ‘list()’ zamienia krotkę na listę.

krot=(0,1,2,3,4,5,4,3,2,1,2,3,4,5)
print(list(krot))
>>>
[0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5]

Funkcja ‘tuple()’ zamienia listę na krotkę.

lista=[0,1,2,3,4,5,4,3,2,1,2,3,4,5]
print(tuple(lista))
>>>
(0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5)

 

Spis treści