
ŹRÓDŁO : http://szgrabowski.kis.p.lodz.pl/Python-podstawy.html
Krótki (typ tuple)
Krotka przypomina listę, tyle że jest niemutowalna (niezmienialna). Składnia:
kolor = (128, 0, 255) # nawiasy okrągłe
Próba zmiany jakiejś składowej nie powiedzie się:
kolor[1] = 20
Jeżeli więc chcesz zmienić krotkę, to powołaj do życia nowy obiekt (o tej samej nazwie):
kolor = (128, 20, 255)
(Przy okazji: stary obiekt kolor zostanie wkrótce „w tle” (i bez Twojej wiedzy) usunięty przez odśmiecacz pamięci (garbage collector).)
Po krotce można iterować:
for skladowa in kolor: print skladowa,
Można ją „rozpakowywać”:
r, g, b = kolor # podstawienie hurtowe
Tudzież robić parę innych rzeczy, ale nie da się ukryć, że krotka przypomina listę, ale jest jednak od niej mniej elastyczna. Po co więc w ogóle zadawać się z krotkami?
Powodów jest kilka. Najważniejszy chyba taki, że tylko typy niemutowalne (a więc m.in. krotka – ale już nie lista) mogą być kluczami w słownikach i zbiorach (o tych strukturach danych niebawem). Ponadto krotka może być (nieco) szybsza, a także zabezpieczać programistę przez pewnymi błędami.
Krotka może mieć tylko jedną składową; zapis wygląda nieco zaskakująco:
t = (12,)
Są funkcje do konwersji listy na krotkę i vice versa: ale uwaga, nie zmieniają one obiektu na którym działają, lecz zwracają nowy:
li = [2, 7, -3.5] tu = tuple(li) type(li) type(tu)
Wypróbuj analogicznie funkcję list().
Przy okazji: listę możemy posortować (zmienia się bieżący obiekt), a krotki nie:
li.sort() # wyświetl teraz li tu.sort() # AttributeError: 'tuple' object has no attribute 'sort'
Funkcje max, min i sum natomiast działają na krotkach i listach:
print max(tu) print max(li[:-1]) print sum((4, 1, 12)) # podwójne nawiasy: wewnętrzne wskazują, że argumentem jest krotka


Offline