🥔 Ziemniak w Dresie

Ustawka z wężem #5 | Krotki

📂 Python

Krotka (tuple) to lista, która poszła na siłownię i teraz jest nie do ruszenia. Możesz ją stworzyć, możesz po niej czytać, ale jak spróbujesz coś zmienić – Python ci przypierdoli TypeError w ryj.

Tworzenie krotki – bo nie zawsze trzeba kwadratowych nawiasów



wspolrzedne = (52.2297, 21.0122)           # klasyka
dni = "Pon", "Wt", "Sr", "Czw", "Pt", "Sob", "Nd"   # bez nawiasów też działa!
pusta = ()                                 # pusta krotka
pojedyncza = ("tylko ja",)                 # UWAGA NA PRZECINEK, bo inaczej to nie krotka!

Indeksy – dokładnie jak w liście, tylko nie pierdol przy zmianie



dni[0]     # → "Pon"
dni[-1]    # → "Nd" (ostatni)
dni[2:5]   # → ("Sr", "Czw", "Pt")   # wycinki działają!
dni[::-1]  # → od tyłu, piękne jak cholera

Jak dasz zły indeks → IndexError. Jak spróbujesz przypisać dni[0] = "Nd"TypeError. I dobrze, bo tak ma być.

Co możesz robić z krotką (a czego nie możesz)


MożnaNie można (i chuj)
len(krotka) – długość append()
krotka.count(x) – ile razy x pop()
krotka.index(x) – pozycja x remove()
x in krotka – sprawdzenie sort(), reverse()
krotka + krotka2 – konkatenacja krotka[0] = coś ← zabronione
krotka * 3 – powtórzenie wszystko co mutuje

Krotki wielopoziomowe – bo można w krotce mieć krotkę



matrix = ((1, 2, 3),
          (4, 5, 6),
          (7, 8, 9))

print(matrix[1][2])   # → 6

Pętla po krotce – trzy najseksowniejsze sposoby



# 1. Prosto w pysk
for rzecz in dni:
    print(rzecz)

# 2. Z indeksem (jak musisz)
for i in range(len(dni)):
    print(i, dni[i])

# 3. Najlepszy – enumerate, bo jesteśmy w Pythonie
for nr, dzien in enumerate(dni):
    print(nr, dzien)

Po co w ogóle krotki, skoro mamy listy?


  • Szybsze niż listy (mniej pamięci, mniej roboty)
  • Nie da się ich przypadkowo zmodyfikować – bezpieczeństwo
  • Mogą być kluczami w słowniku (listy nie mogą!)
  • Zwracane przez wiele funkcji (np. divmod(10,3) → (3, 1))
  • Idealny na rekordy: osoba = ("Jan", "Kowalski", 1990)

Rozpakowywanie – najpiękniejsza rzecz na świecie



imie, nazwisko, rok = osoba
print(imie)     # → Jan

a, b = (10, 20)
a, b = b, a     # swap w jednej linii, zero zmiennych tymczasowych!

# gwiazdka jak masz za dużo
pierwszy, *srodek, ostatni = (1,2,3,4,5,6)
print(srodek)   # → [2,3,4,5]

Podsumowanie – zapamiętaj albo spierdalaj


  • Krotka = (...) albo po prostu 1, 2, 3
  • Nie zmienisz jej nigdy – i to jest zajebiste
  • Jednoelementowa → przecinek obowiązkowy: ("sam",)
  • Wycinki, pętle, len(), count(), index() – wszystko działa jak w liście
  • Używaj kiedy dane mają być stałe albo chcesz klucz do dict
  • Rozpakowywanie krotek to czysta poezja

Krotka = lista na sterydach niezmienności. Kochaj ją albo giń.