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!

Podobne dokumenty