Zajęcia Python III nr 4 - notatki
Struktury danych
De facto "kolekcja" wartości. Struktury danych są ułatwieniem przy pisaniu aplikacji, w pewnym sensie samo ich istnienie niesie też ze sobą informację o możliwej zawartości. Dobieramy strukturę z myślą o konkretnym celu, potencjalny odbiorca kodu dzięki temu bedzie wiedział co robić.
Listy i krotki (lists and tuples):
- Listy są modyfikowalne (mutable). Do list można więc dodawać w razie potrzeby coś nowego, albo odejmować elementy. Deklaruje się je poprzez użycie nawiasów kwadratowych.
lista1 = [1, 2, 3]
print(lista1)
lista2 = ["kot", "papuga", "pies"]
print(lista2)- Krotki są niemodyfikowalne (immutable). Nie możemy więc dodawać ani odejmować elementów. Długość krotek jest więc stała. Jedyną metodą "modyfikowania" krotek jest po prostu utworzenie całkiem nowej. Krotki deklarujemy przy pomocy nawiasów okrągłych. Przykładową krotką są chociażby wartości oznaczające kolory. (Red, Green, Blue. czyli RGB)
czerwony = (255, 0, 0)
print(czerwony)
krotka = ("desery", "zupy", "przystawki", True, 23)
print(krotka)Staramy się nie mieszać typów danych, ale czasem i tak się to robi - najlepiej robić to w krotkach.
Indeksy
Każdy element w liście/krotce ma swój przypisany numer. Pierwsze elementy każdej listy i krotki są indeksowane jako 0.
Elementy możemy wywoływać przy pomocy numeru w indeksie w nawiasie kwadratowym
lista = ["ala", "ma" "kota", 3, True, 2.14]
print(lista[2])W przykładzie efektem wywołania będzie słowo "kota", zgodnie z zasadą indeksowania od 0.
Cięcie list i krotek
- Ze struktur danych możemy wyciągać konkretne zakresy. Zakresy oznaczamy poprzez dwukropek.
mojalista = ["a", "b", "c", "d", "e", "f"]
print(mojalista[0:3])- W podanym przykładzie wyświetli się "a", "b", "c", bo w wycinaniu pierwszy indeks zakresu określa to co ma się pojawić włącznie, a drugi jest miejscem w którym Python ma "skończyć", nie uwzględniając pozycji z tym indeksem w wycinku.
Ostatnia pozycja w krotce/liście może też być wywoływana jako -1. Wtedy wcześniejsze to odpowiednio -2, -3 i tak do początku struktury. To przydatne, gdy nie wiemy jak wiele jest elementów w strukturze, a potrzebujemy wyciągnąć ostatni z nich. - Jeżeli potrzebujemy np. od pewnego elementu do końca, piszemy np:
mojalista = ["a", "b", "c", "d", "e", "f"]
print(mojalista[-2:])- Możemy użyć funkcji len do policzenia liczby elementów.
- Stringi z punktu widzenia Pythona są krotkami, co oznacza, że możemy np. wyciągać pojedyncze litery ze słów itd.
- Listy możemy do siebie "dodawać".
Metody
Metoda to specjalna przypisana funkcja, zawsze powiązana z typem obiektu. Są dopisywane po kropce.
Wybrane metody dla krotek i list:

- W liście działa też .insert() do wprowadzania elementów do listy. W tym wypadku podajemy indeks na który ma wskoczyć element.
- .extend() dodaje całę listę elementów do drugiej listy (w przeciwieństwie do .append() które dodaje pojedyncze elementy)
- Możemy przypisać nowe wartości do list, zamieniając już istniejące, np.
moje_zakupy = ["miód", "pieprz", "jogurt", "sałata", "mango"]
moje_zakupy[-1] = "jabłka"
moje_rzeczy = ["miód", "pieprz", "jogurt", ["sałata", "mango"]]
moje_rzeczy[-1][-1] = "szczoteczka do zębów"Słowniki:
Zwane w innych językach np. hashmapami. Są to bardzo zaawansowane struktury. Składają się z par kluczy i wartości. Klucze słownika muszą być niemodyfikowalne.


przykladowy_slownik = {
"Janusz": 45,
"Krystyna": 32,
"Krysztof": 25,
}
usuniete = przykladowy_slownik.pop("Krzysztof")
print(przykladowy_slownik)alternatywa do metody pop w słowniku
del przykladowy_slownik["Krzysztof"]del działa też na innych strukturach danych

Zbiory (ang. set)
Struktura przypominająca listę, zawierająca same unikalne wartości. Duplikaty są usuwane. Zbiory są też nieuporządkowane - nie mają one indeksów. Przy każdym wydruku kolejność elementów jest inna. Brak indeksowania utrudnia wybranie konkretnych elementów. Dlatego też, lepiej jest zamienić zbiór ponownie na listę, po tym gdy użyjemy zamiany na zbiór do eliminacji duplikatów.
