Podstawy bioinformatyki Podstawowe typy danych Listy oraz krotki Joanna Bednarska, Dawid Grabarek Zakład Chemii Fizycznej i Kwantowej Katedra Inżynierii i Modelowania Materiałów Zaawansowanych joanna.bednarska@pwr.edu.pl dawid.grabarek@pwr.edu.pl 8 listopada 2015 1 / 13 Plan wykładu 1 Typy danych Krotki Listy 2 Notacja zakresów 2 / 13 Krotka Krotka - standardowy typ, służący do przechowywania sekwencji danych. Jest to typ tuple. Przykład >>> liczby=(2, 3, 4, 5) >>> zakupy=( chleb , mleko , maslo , piwo ) >>> krotka=(30, krotka2) #Krotki mogą być osadzane/ zagnieżdżane jedna w drugiej >>> print liczby, zakupy, krotka >>> liczby[3] #Elementy krotki są indeksowane 5 >>> krotka[1] ( chleb , mleko , maslo , piwo ) >>> krotka[1][2] maslo >>> literki=tuple( NAPIS ) >>> print literki 3 / 13 ( N , A , P , I , S ) Krotka-działania Przykład >>> dir() #Przypominamy sobie jakie zmienne utworzyliśmy >>> liczby + zakupy #Krotki można dodawać (2, 3, 4, 5, chleb , mleko , maslo , piwo ) >>> liczby == zakupy #Krotki można porównać False >>> liczby[0]=4 #Elementów krotki nie można zmieniać Traceback (most recent call last): File "", line 1, in TypeError: tuple object does not support item assignment 4 / 13 Lista Lista- typ podobny to krotki, chociaż bardziej elastyczny. Jest to typ list. Przykład >>> lista1=[1, 2, 3, 4, 5] >>> lista2=range(1, 6) #Używając funkcji wbudowanej można wygodnie generować sekwencje liczb całkowitych >>> lista1 == lista2 True >>> range(1, 30, 3) [1, 4, 7, 10, 13, 16, 19, 22, 25, 28] >>> range(90, 70, -4) [90, 86, 82, 78, 74] >>> print range.__doc__ #Skąd wiem jak używać tej funkcji? >>> [1,2] == [2,1] #Pozycja w liście jest bardzo ważna. False Sprawdz to dla krotki. 5 / 13 Listy, a inne typy danych Podobnie do napisów, listy można mnożyć przez liczbę całkowitą i dodawać do siebie. Listy wspierają również indeksowanie, zakresy, oraz przeciwnie do krotek i napisów przypisywanie elementów: Przykład >>> lista1[1:3] >>> lista1[2]=22 >>> print lista1 [1, 2, 22, 4, 5] Listy i krotki mogą być wzajemnie zagnieżdżane. 6 / 13 Lista- ważne atrybuty Przykład >>> dir(list) >>> liczby=range(10) >>> liczby.append(2) #Dodaj element na końcu listy >>> liczby.append(4) >>> print liczby 7 / 13 Lista- ważne atrybuty Przykład >>> liczby.count(5) #Ile razy 5 występuje w liczby? >>> liczby.index(2) #Na której pozycji najwcześniej pojawia się 2 w liczby? >>> [7, 4, 2, 3, 4, 2, 5].index(4) >>> liczby.pop(4) #Usuń element na pozycji 4 >>> liczby.remove(2) #Usuń element 2 na pozycji o najmniejszej wartości >>> liczby.reverse() #Odwróć kolejność elementów w liczby >>> liczby.sort() #Uszereguj elementy listy liczby rosnąco (lub w kolejności alfabetycznej) 8 / 13 Napisy i listy- indeksowanie i notacja zakresów Indeksowanie znaków napisu +---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 9 / 13 Napisy i listy- indeksowanie i notacja zakresów Przykład >>> napis= To jest bardzo długi napis >>> napis[5] #Wyświetl 5-ty znak s >>> napis[-5] #Wyświetl 5-ty znak od końca n >>> napis[5:11] #Wyświetl znaki od 5-ego do 11-ego st bar >>> napis[:11] To jest bar >>> napis[5:] st bardzo długi napis >>> napis[5:-5] st bardzo długi 10 / 13 Napisy i listy- indeksowanie i notacja zakresów Przykład >>> napis[4] == e #Czy 4-ty znak to e ? True >>> napis[2] = xxx #To jest próba zmiany oryginalnego napisu. Ale tego nie można zrobić! >>> lista=range(10) >>> lista[2]=3.142 #Listy można zmieniać. 11 / 13 Zadanie domowe Zad. 1. Napisz skrypt imie.py, który pobiera od użytkownika imię i nazwisko, np. Dawid Grabarek, a następnie zwraca następujący tekst: DAWID GRABAREK dAWID gRABAREK Grabarek Dawid kerabarG diwaD D--a--w--i--d-- --G--r--a--b--a--r--e--k Użyj funkcji input() oraz raw input() do pobierania danych. Porównaj jak prawidłowo wpisać tekst w obu przypadkach. 12 / 13 Zadanie domowe Aby otrzymać dwa pierwsze napisy z zadania 2-ego, należy użyć dwóch atrybutów, które mają indeksy 33 i 66. Użyj funkcji dir() (zauważ, że zwraca ona listę atrybutów) aby je odnalezć, a następnie użyj atrybutu doc , aby dowiedzieć się jak działają. 13 / 13