Podstawy programowania w Pythonie Wykład 8 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 5 grudnia 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 1 / 17
Krotki Krotka (ang. tuple) to struktura danych będaca odzwierciedleniem matematycznej n-ki, tj. uporzadkowanego ciagu wartości. Elementy krotki nie musza być tego samego typu. Krotki sa niemodyfikowalne, ale ich elementy moga być wartościami typów modyfikowalnych. Odczyt elementu krotki wymaga podania indeksu liczbowego żadanego elementu. y >>> t = () # krotka pusta >>> t = (6,) # krotka jednoelementowa dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 2 / 17
krotki y nais = "Anais Nin", 1903 anais ( Anais Nin, 1903) nais[0] Anais Nin nais[1] 1903 >>> # Pakowanie n = ("Anais", "Nin", 1903, "pisarka", "Delta Wenus") n[2] 1903 # Rozpakowanie >>> imie, nazwisko, rok_ur, profesja, ksiazka = an >>> profesja pisarka dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 3 / 17
Funkcje zwracajace krotki Funkcja może zawsze zwrócić tylko jedna wartość, ale poprzez zgrupowanie dowolnie wielu wartości w krotkę, może zwrócić ja jako pojedyncza wartość. import math def main(): r = float(input("podaj promień koła: ")) op = obwod_i_pole(r) print(op[0], op[1]) def obwod_i_pole(r): obwod = 2 * math.pi * r pole = math.pi * r * r return (obwod, pole) dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 4 / 17
Istnieje w Pythonie pewna liczba złożonych typów danych, używanych do grupowania innych wartości. Najbardziej użytecznym typem jest lista, która można zapisać jako listę elementów poprzedzielanych przecinkami, umieszczona w kwadratowych nawiasach. Elementy listy nie musza być tego samego typu. = ['spam', 'eggs', 6, 123] ['spam', 'eggs', 6, 123] dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 5 / 17
Podobnie jak indeksy łańcuchów znaków, indeksy listy rozpoczynaja się od wartości 0. = ['spam', 'eggs', 6, 123] [0] 'spam' [3] 123 [-2] 6 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 6 / 17
moga być przedmiotem operacji wykrawania, sklejania itd. = ['spam', 'eggs', 6, 123] [1:-1] ['eggs', 6] [:2] + ['bacon', 2 * 2] ['spam', 'eggs', 'bacon', 4] >>> 2 * a[:3] + ['hi!'] ['spam', 'eggs', 6, 'spam', 'eggs', 6, 'hi!'] dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 7 / 17
Odmiennie niż w przypadku napisów, które sa niezmienne, można zmieniać poszczególne elementy listy. = ['spam', 'eggs', 6, 123] [2] = a[2] + 23 ['spam', 'eggs', 29, 123] dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 8 / 17
Możliwe jest także przypisanie do wycinka, co może zmienić długość listy. = ['spam', 'eggs', 6, 123] >>> # Zastąp pewne elementy:... a[0:2] = [1, 12] [1, 12, 6, 123] >>> # Usuń pewne elementy:... a[0:2] = [] [6, 123] dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 9 / 17
(dokończenie) [6, 123] >>> # Wstaw pewne elementy:... a[1:1] = ['ab ', 'xy '] [6, 'ab ', 'xy ', 123] >>> # Wstaw kopię siebie na początek:... a[:0] = a [6, 'ab ', 'xy ', 123, 6, 'ab ', 'xy ', 123] >>> # Wyczyść listę:... a[:] = [] [] dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 10 / 17
Wbudowana funkcja len może być stosowana także do list. = ["spam", "eggs", 6, 123] ['spam', 'eggs', 6, 123] >>> len(a) 4 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 11 / 17
Możliwe jest zagnieżdżanie list, tzn. tworzenie list, których elementami sa inne listy. >>> b = [2, 3] = [1, b, 4] [1, [2, 3], 4] >>> len(a) 3 [1] [2, 3] [1][0] 2 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 12 / 17
Można dodać dowolny element na końcu listy przy pomocy metody append. >>> b = [2, 3] = [1, b, 4] [1, [2, 3], 4] [1].append('dodany') [1, [2, 3, 'dodany'], 4] >>> b [2, 3, 'dodany'] [1] \IS\ b True dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 13 / 17
Można usunać element listy o podanym indeksie, jak również wycinek listy, przy pomocy instrukcji del. = [-1, 1, 66.25, 333, 333, 1234.5] >>> del a[0] [1, 66.25, 333, 333, 1234.5] >>> del a[2:4] 1, 66.25, 1234.5] >>> del a[:] [] dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 14 / 17
napisy Wybrane metody klasy str partition(sep) Dzieli łańcuch znaków w miejscu pierwszego wystapieniu separatora sep i zwraca trójelementowa krotkę zawierajac a część przed separatorem, separator, oraz część po separatorze. Jeżeli separator nie zostanie znaleziony, zwraca trójelementowa krotkę zawierajac a cały łańcuch jako pierwsza składowa krotki oraz dwa ciagi puste jako pozostałe składowe krotki. split(sep = None, maxsplit = -1) Zwraca listę słów w łańcuchu, używajac separatora set jako ogranicznika. Jeżeli został podany argument maxsplit, wynikowa lista będzie mieć co najwyżej maxsplit + 1 elementów. Jeżeli argument maxsplit nie jest określony, lub równy -1, to nie ma limitu na liczbę podziałów. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 15 / 17
napisy Dodatkowe uwagi o argumencie sep metody split 1 Jeżeli podano argument sep, to kolejne jego wystapienia w łańcuchu nie sa grupowane razem i uważa się, że oddzielaja one puste łańcuchy. 2 Jeśli argument sep nie jest określony lub jego wartość jest równa None, to stosowany jest inny algorytm podziału: sasiaduj ace białe znaki sa traktowane jako jeden separator, a wynik podziału nie będzie zawierać pustych ciagów 3 W konsekwencji, podział ciagu pustego lub ciag składajacego się tylko z białych znaków da w wyniku listę pusta. dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 16 / 17
>>> "".split(",") [ ] >>> "".split() [] >>> s = "Ala ma kota, który łowi \tmyszy" print(s) Ala ma kota, który łowi myszy >>> s.split() [ Ala, ma, kota,, który, łowi, myszy ] >>> s.split(",") [ Ala ma kota, który łowi \tmyszy ] >>> s.split("ma") [ Ala, kota, który łowi \tmyszy ] dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania w Pythonie 05.12.2012 17 / 17