Prezentacja z wykładu Plik
Transkrypt
Prezentacja z wykładu Plik
Informatyka 2015/16 wykład 3 Złożone struktury danych cz. 1 Dr inż. Witold Nocoń (p. 230) Co to jest program? PROGRAMY = ALGORYTMY + STRUKTURY DANYCH Przykłady prostych algorytmów: • Znajdowanie maksymalnej wartości w tabeli itp.. • Liczenie sumy wartości w tabeli. • Sortowanie. • Algorytmy obliczeniowe: • Liczenie wzorów iteracyjnych (ciągów) • Numeryczne rozwiązywanie równań różniczkowych Co to jest program? PROGRAMY = ALGORYTMY + STRUKTURY DANYCH Przykłady prostych złożonych struktur danych (w Pythonie): • Listy (list) – (ogólnie „tablice”) • Łańcuchy tekstu (string) • Krotki (tuple) • Słowniki Co to jest program? ALGORYTMY + STRUKTURY DANYCH Znajdź najszybszą trasę Co to jest program? ALGORYTMY + STRUKTURY DANYCH Złożone struktury danych - Python • Sekwencje: – Listy (ang. list) – Łańcuchy znaków (ang. string) – Krotki (ang. tuple) • Odwzorowania (ang. mappings) – Słowniki (ang. dictionary) • Inne: – Pliki. – Itp……… Listy • Uporządkowane kolekcje dowolnych obiektów • Dostęp do elementów list można uzyskać za pomocą pozycji przesunięcia • Listy mają zmienna długość, są niejednorodne i można je dowolnie zagnieżdżać • Listy należą do zmiennych sekwencji • Listy są tablicami referencji do obiektów Tworzenie list • Tworzenie list: >>> L=[1,2,3,4,5,6,7,8,9] >>> print(L) [1, 2, 3, 4, 5, 6, 7, 8, 9] • Lista pusta >>> P = [ ] >>> print(P) [] Tworzenie list • Tworzenie list z innych zmiennych >>> S = list('mielonka') >>> S ['m', 'i', 'e', 'l', 'o', 'n', 'k', 'a'] Dostęp do elementów list za pomocą indeksu (pierwszy element ma indeks zero!) >>> S = list('mielonka') >>> S[0] 'm' >>> S[7] 'a' >>> S[8] Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> S[8] IndexError: list index out of range => Python nie pozwala na odnoszenie się do elementów, które nie istnieją Sprawdzenie długości (funkcja len działa na dowolnej sekwencji lub odwzorowania): >>> len(S) 8 Operatory na listach • Operatory na listach Dodawanie: >>> k = [1 ,2] + [5 ,6] >>> k [1, 2, 5, 6] • Mnożenie: >>> S=list('spam') >>> S=S*3 >>> S ['s', 'p', 'a', 'm', 's', 'p', 'a', 'm', 's', 'p', 'a', 'm'] Operatory na listach Usuwanie elementów (za pomocą del): >>> S = list('spam') >>> del S[0] >>> S ['p', 'a', 'm'] Operacje na listach za pomocą metod klasy list: L.append(5) L.extend([1,2,3]) L.pop() >>> L=[1,2,3,4,5] >>> L.pop() 5 >>> L.pop(0) 1 >>> L [2, 3, 4] I wiele innych! => help(list) L.insert() L.count() L.sort() L.reverse() L.clear() L.copy() Program wprowadzający kolejne elementy do listy z klawiatury aż do podania znaku pustego Start Stwórz listę pustą Wprowadź tekst False len(tekst) > 0 Pętla while True True Break True False - Konwertuj do float - Dodaj tekst do listy Stop pro_03_01.py Program obliczający sumę liczb w tablicy (liście) Start(dana jest lista L) Licznik = 0 Licznik = Licznik + 1 Licznik < len(L) True Wypisz L(licznik) False Stop pro_03_02.py Pętla for Zadanie „przeiterowania” całej listy (tablicy) jest tak częste, że istnieje pętla for która znacznie ułatwia to zadanie. L = [10, 20, 30, 40, 50, 60] for liczba in L: print('Kolejny element ' + str(liczba)) print('Koniec programu') Pętla for for element in struktura: • Blok programu wykonywany tyle razy ile jest elementów w strukturze • W każdej kolejnej iteracji zmienna „element” przyjmuje wartość kolejnego elementu „struktury” pro_03_02a.py pro_03_02b.py Programy • Sumowa nie elementów tablicy (listy): pro_03_03.py • Znajdowanie maksymalnej, minimalnej wartości tablicy pro_03_04.py Specjalny typ range • Typ range ułatwia posługiwanie się pętlą for. >>> l = list(range(1,5)) >>> l [1, 2, 3, 4] • range(n,m) odpowiada liście wartości od n do m-1. Częste użycie pętli for z użyciem typu range • Chcemy zrobić coś n razy i mieć licznik # częste użycie pętli for do wykonania pewnej # czynności n razy # i wymagającej licznika n = input('Podaj ile = ') n=int(n) for i in range(1,n+1): print(i) pro_03_05.py Programy • Znajdowanie maksimów lokalnych w wektorze: - jeśli element jest większy od poprzedniego oraz większy od następnego to jest maksimum lokalnym L = [1, 2, 3, 4, 3, 3, 3, 3, 5, 4, 1, 1, 1, 5, 4, 1, 0] Przeglądamy cały wektor za każdym razem porównując bieżący element z poprzednim oraz następnym pro_03_6.py Uwaga: L = [1, 2, 3, 4, 3, 3, 3, 3, 5, 4, 1, 1, 1, 5, 4, 1, 0] - nie można porównywać z elementami których nie ma!