[ Pobierz całość w formacie PDF ]

pretowane poprawnie. Mogą być wprowadzane z lub bez nawiasów, aczkolwiek nawiasy są niekiedy potrzebne
(np. jeżeli krotka jest częścią jakiegoś długiego wyrażenia).
Krotki mają dużo zastosowań, np. jako para współrzędnych (x,y), rekord pracowników z bazy danych itd. Nie jest
możliwe przypisanie poszczególnym elementom takiej listy wartości, aczkolwiek można to zasymulować poprzez
wycinanie i sklejanie.
Pewien problem z takimi listami pojawia się jeżeli mają zawierać zero lub jeden element: aby osiągnąć taki efekt
trzeba użyć lekko pokręconej składni. Puste krotki tworzone są przez pustą parę nawiasów okrągłych; lista z
jednym elementem poprzez wartość, po której następuje przecinek (nie wystarcza otoczyć pojedynczą wartość
nawiasami okrągłymi). Brzydkie, ale efektywne. Na przykład:
2
ang. evolving
3
ang. tuple
5.3. Listy niemutowalne i sekwencje 33
>>> pusta = ()
>>> jednoelementowa =  hello , #
>>> len(pusta)
>>> len(jednoelementowa)
1
>>> jednoelementowa
( hello ,)
Instrukcjat = 12345, 54321,  hello! jest przykładem pakowania krotki: wartości12345,54321i
 hello! pakowane są do krotki. Operacja odwrotna jest również możliwa, np.:
>>> x, y, z = t
Takie coÅ› nazywane jest, odpowiednio, krotki. Takie rozpakowywanie wymaga, aby lista zmiennych po lewej
stronie miała tyle samo elementów, ile długość listy niemutowalnej. Zauważcie, że takie przypisanie jest kombi-
nacjÄ… pakowania i rozpakowywania listy niemutowalnej!
Przez przypadek taką samą operację można powtórzyć dla zwykłej listy. Osiągamy to przez otoczenie listy zmi-
ennych nawiasami kwadratowymi:
>>> a = [ wędzonka ,  jaja , 100, 1234]
>>> [a1, a2, a3, a4] = a
LISTY NIEMUTOWALNE KROTKI MOG ZAWIERA OBIEKTY MUTOWALNE!
5.4 SÅ‚owniki
Innym użytecznym typem danych w Pythonie jest słownik. Słowniki spotykane są czasami w innych językach
programowania jako  pamięć asocjacyjna lub  tablice asocjacyjne . W odróżnieniu od sekwencji, które są in-
deksowane liczbami, słowniki indeksowane są kluczami, które mogą być obiektami dowolnego, niemutowalnego
typu, np. napisy i liczby zawsze mogą być kluczami. Listy niemutowalne również mogą zostać użyte jako klucze,
jeżeli zawierają napisy, liczby lub listy niemutowalne. Nie można użyć zwykłych list jako kluczy, ponieważ
można je modyfikować za pomocą metodyappend().
Najlepiej wyobrazić sobie słownik jako nieuporządkowany zbiór par klucz:wartość, z założeniem, że klucze są
unikalne (w jednym słowniku). Para nawiasów klamrowych tworzy pusty słownik: {}. Umieszczenie listy par
klucz:wartość, oddzielonych przecinkami w tych nawiasach dodaje początkowe pary klucz:wartość do słownika.
w ten sposób słowniki są wyświetlane na standardowym wyjściu.
Głównymi operacjami na słownikach są wkładanie wartości z jakimś kluczem i wyciąganie wartości opatrzonej
podanym kluczem. Możliwe jest usuwanie pary klucz:wartość za pomocą del. Jeżeli próbuje się przechować
klucz, który istnieje już w słowniku, poprzednia wartość związana z tym kluczem jest zapominana. Błąd powstaje
w wyniku próby pozyskania wartości spod klucza, który nie istnieje w słowniku.
Metoda obiektu słownikakeys()zwraca listę wszystkich kluczy używanych w słowniku, w porządku losowym
(jeżeli chce się uzyskać posortowaną listę kluczy, zastosuj po prostu metodę sort() na tej liście). Do
sprawdzenia obecności klucza w słowniku służy metodahas_key().4
Oto mały przykład użycia słownika:
4
 posiada klucz? (przyp. tłum.)
34 Rozdział 5. Struktury danych
>>> tel = { jack : 4098,  sape : 4139}
>>> tel[ guido ] = 4127
>>> tel
{ sape : 4139,  guido : 4127,  jack : 4098}
>>> tel[ jack ]
4098
>>> del tel[ sape ]
>>> tel[ irv ] = 4127
>>> tel
{ guido : 4127,  irv : 4127,  jack : 4098}
>>> tel.keys()
[ guido ,  irv ,  jack ]
>>> tel.has_key( guido )
1
5.5 Jeszcze trochÄ™ o warunkach
Warunki używane w instrukcjachwhileiifmogą zawierać inne operatory, niż poznane dotychczas operatory
porównania.
Operatory porównaniainoraznot insprawdzają czy jakaś wartość pojawia się lub nie w sekwencji. Operatory
isiis notporównują, czy dwa obiekty są w rzeczywistości tymi samymi obiektami: ma to znaczenie tylko dla
przypadków obiektów mutowalnych, takich jak listy. Wszystkie operatory porównania mają taki sam priorytet,
który jest niższy niż priorytet wszystkich operatorów numerycznych.
Porównania mogą być sklejane w jeden łańcuch, np. a
czybjest równec.
Porównania mogą być łączone operatorami logicznymi: and i or, a wynik porównania (lub każdego innego
wyrażenia logicznego) może być zanegowany poprzeznot. Wszystkie, wyżej wymienione operatory mają niższy
priorytet od priorytetu operatorów porównania, aczkolwiek not ma wyższy priorytet od or. Tak więc A and
not B or C są odpowiednikiem (A and (not B) )or C. Oczywiście, zawsze można użyć nawiasów,
aby wyrazić pożądaną kolejność.
Operatory logiczneandior są tzw. operatorami skrótu5. Ich argumenty ewaluowane są od lewej do prawej, a [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • glaz.keep.pl