Są takie umiejętności, które każdy programujący w dowolnym języku programowania musi umieć posiadać. Nie inaczej jest w Pythonie. W serii “wtorki z Pythonem” będę poruszał także bardziej podstawowe zagadnienia związane z programowaniem, które nie tylko dla osób początkujących mogą stanowić przydatne kompendium wiedzy. W tym tygodniu zajmę się typem danych, jakim są listy.
Listy
W języku Python lista to zmienna składająca się z elementów dowolnego typu. Dla uproszczenia możemy o niej myśleć jak o jednowymiarowej tablicy. Zmienne tego typu spotkamy w Perlu, PHP czy C. W Pythonie elementami listy mogą być dowolne typy danych, także inne listy.
pusta_lista = [] lista_a = [ 1, 2, 'trzy', 'cztery'] lista_b = [ 11, 12, lista_a ]
Aby zmiennej nadać typ listy posługujemy się nawiasami kwadratowymi. Tworzenie pustej listy jest przydatne, gdy chcemy jednoznacznie zadeklarować typ zmiennej, zanim wpiszemy do niej dane. Jest to wykorzystywane na przykład w konstruktorach klas. Do kolejnych elementów naszej zmiennej odwołujemy się za pomocą indeksów, których numerację zaczynamy od 0. Poniżej kilka prostych odwołań:
>>> lista_a[0] 1 >>> lista_a[2] 'trzy' >>> lista_b[0] 11 >>> lista_b[2] [1, 2, 'trzy', 'cztery'] >>> lista_b[2][3] 'cztery'
Indeksy ujemne i wycinanie
Python jest językiem bardzo elastycznym. Możemy w nim wykonać kilka ciekawych operacji na listach. Do elementów listy możemy odwoływać się za pomocą indeksów ujemnych, czyli numerować listę od końca. Ostatni z elementów ma w takim przypadku indeks -1, przedostatni -2, i tak dalej.
>>> lista_a[-1] 'cztery' >>> lista_a[-4] 1
Inną przydatną operacją jest odwoływanie się jedynie do wycinka listy (ang. slice). Fragment ten musi tworzyć pojedynczy ciągły blok. Zakres elementów definiujemy znakiem :
. Jeżeli wycinek ma obejmować pierwszy lub ostatni element, to możemy pominąć jego numer z prawej lub lewej strony dwukropka. Jest to szczególnie przydatne, gdy nie wiemy, z ilu elementów składa się nasza zmienna, ale wiemy, od którego elementu chcemy wydzielić podzbiór.
Należy zwracać uwagę na to, w jaki sposób wycinek definiujemy. Zapis [:2]
oznacza pobranie dwóch pierwszych elementów listy, czyli tych o indeksach 0 i 1. Natomiast zapis [2:]
oznacza zakres od drugiego elementu do końca. Pamiętajmy zatem, że definiując wycinek wartość pod indeksem, który podaliśmy jako górną granicę, nie będzie zawierać się w wycinku.
>>> lista_a[:2] [1, 2] >>> lista_a[2:] ['trzy', 'cztery'] >>> lista_a[1:3] [2, 'trzy']
Pamiętajmy także, że odwołanie do elementu, który nie istnieje, zwróci nam błąd. Za pomocą systemowej funkcji len()
w prosty sposób sprawdzimy, z ilu elementów składa się lista.
>>> len(lista_a) 4 >>> lista_a[4] Traceback (most recent call last): File "", line 1, in IndexError: list index out of range