Back to Top
 
 

Nawigacja po kolekcjach

 

Oto przykład:

# Star Wars!
star_wars = ["Luke", "Leia", "Han", "Vader", "Obi-Wan", 
  "Chewie", "R2D2", "C3PO", "Emperor", "Jabba",
  "Lando"]

Zmienna star_wars przechowuje listę elementów, które są napisami. Podczas tej lekcji poznamy możliwości operowania na listach, które daje nam Python.

Ujemne indeksy

Co się stanie, jeśli podamy ujemny indeks?

 

Oto przykład:

# ujemny indeks
print(star_wars[-1])

Oto przykład ujemnego indeksu:

Program wyświetli napis “Lando”.

Indeks -1 oznacza po prostu “weź pierwszy element od końca”. Analogicznie – indeks -2 zwróci nam Jabbę, -3 – Imperatora, -4 C3PO i tak dalej, aż do końca. Indeks -100 wyrzuci błąd, bo lista nie posiada aż tylu elementów.

Fragment listy

Możemy pobrać fragment listy podając dwa indeksy: początkowy i końcowy. Oddzielamy je dwukropkiem.

 

Oto przykład:

# fragment listy
fragment = star_wars[2:5]
print(fragment)

Oto przykład fragmentu listy:

 

Wynikiem będzie:

['Han', 'Vader', 'Obi-Wan']

Coś tu jest nie tak, prawda? Skoro w nawiasie podajemy indeks początkowy i końcowy, to powinno pokazać bohaterów od Hana do Chewiego włącznie!

Otóż nie. W Pythonie indeks końcowy to ten, który już nie wchodzi do zakresu. Mówiąc prościej – dodaj 1 do indeksu ostatniego elementu, który chcesz wyciągnąć. Zatem star_wars[2:5] wyciągnie Ci drugi, trzeci i czwarty element z listy star_wars, ale piątego już nie!

Puste indeksy

Oto przykład pominięcia indeksu listy:

ch1 = star_wars[4:]
ch2 = star_wars[:6]
print(ch1)
print(ch2)

Jeśli pominiesz indeks listy to:

  • w zmiennej ch1 będą się znajdowały elementy listy star_wars od elementu o indeksie 4 do końca,
  • w zmiennej ch2 będą się znajdowały elementy listy star_wars od elementu o indeksie 0, do elementu o indeksie 5 (pamiętaj, że prawy indeks nie wchodzi do zakresu)

W zakresach możesz używać też indeksów ujemnych.

Oto przykład używania indeksów ujemnych:

ch3 = star_wars[-4:]
print(ch3)

Wynik:

['C3PO', 'Emperor', 'Jabba', 'Lando']

Czyli od elementu czwartego od końca do ostatniego elementu.

ch4 = star_wars[1:-5]
print(ch4)

Oto przykład kolejny przykład użycia ujemnych indeksów:

 

Wynik:

['Leia', 'Han', 'Vader', 'Obi-Wan', 'Chewie']

Zwróć uwagę, że piątym elementem od końca jest R2D2, ale ten element nie wchodzi do zakresu.

Skoki

Python jest tak fajnie zaprojektowany, że umożliwia nawet wyjęcie z listy nie tylko kilku kolejnych elementów, ale np. co drugi, co trzeci, a nawet od tyłu! Wystarczy tylko dodać kolejny parametr w nawiasie kwadratowym, również oddzielając go dwukropkiem.

 

Oto przykład:

# bierzemy co drugi element, począwszy od pierwszego, do szóstego włącznie.
ch5 = star_wars[1:7:2]
print(ch5)

# ...a tutaj bierzemy od początku do końca co trzeci:
ch6 = star_wars[::3]
print(ch6)

# Teraz weźmiemy od drugiego od końca do drugiego od początku, 
# co drugi:
ch7 = star_wars[-2:2:-2]
print(ch7)

# ...a teraz najlepsze: odwracamy kolejność listy:
ch8 = star_wars[::-1]
print(ch8)

Oto przykład użycia skoków:

Genialne, prawda?

Ale to jeszcze nie wszystko!

Cofnijcie się do początku poprzedniej lekcji, nazwałem tam listę kolekcją. Kolekcją w informatyce nazywamy obiekt, który potrafi przechować dowolną liczbę innych obiektów. Zatem, w Pythonie, lista jest kolekcją. Ale nie tylko.

Napisy

Napisy? Tak! W Pythonie napis też jest kolekcją pojedynczych znaków! I tak, jak możemy nawigować po liście, wycinać małe fragmenty, odwracać – tak samo możemy postępować z napisami.

 

Oto przykład:

# weźmy pierwszy znak z napisu
txt =A long time ago in a galaxy far, far away…”
print(txt[0])


Wynik:
A

...a teraz wytniemy drugi wyraz:

word = txt[2:6]
print(word)

Wynik:
long

A teraz odwracamy napis:
print(txt[::-1])

Wynik:
...yawa raf ,raf yxalag a ni oga emit gnol A

Oto przykład operacji na tekście:

 

Zadania

 

Zadanie 1

Przeanalizuj kod. Znajdziesz w nim listę wszystkich płyt zespołu The Beatles, posortowanych od najstarszej (indeks 0), do najnowszej. Wyświetl pierwszą i ostatnią płytę zespołu.

Przejdź do pierwszego zadania:

Zadanie 2

Wyświetl na ekranie pięć pierwszych płyt zespołu.

Przejdź do drugiego zadania:

Zadanie 3

Wyświetl na ekranie wszystkie płyty od trzeciej do siódmej włącznie

Przejdź do trzeciego zadania:

Zadanie 4

A teraz – wyświetl co drugą płytę, począwszy od pierwszej, skończywszy na ostatniej.

Przejdź do czwartego zadania:

Zadanie 5

Na koniec wyświetl wszystkie płyty od najstarszej, do najnowszej (użyj odwracania tablicy).

Przejdź do piątego zadania:

 

Odpowiedzi do zadań

Zadanie 1

Zadanie 2

Zadanie 3

Zadanie 4

Zadanie 5