2024-06-18

Myśląc o Pythonie: Więcej operacji na listach

Dziś kontynuujemy operacje na listach. Pomówimy sobie o tym co jeszcze możemy z taką listą zrobić i jakich operacji i metod możemy użyć względem listy. Jak wspomnieliśmy, listy w Pythonie są bardzo elastycznym typem danych. Dotychczas już robiliśmy kilka fajnych rzeczy z listami: odwracaliśmy je, sortowaliśmy, dodawaliśmy elementy do listy. Dziś, m.in. poznamy tzw. slicing.

Lista będąc tak wszechstronną i szeroko używaną konstrukcją w Pythonie, pozwala na dość wiele, ale zanim sobie powiemy o tym, zacznijmy po prostu od omówienia naszej początkowej listy, a zawiera ona ponownie elementy liczbowe. Są to liczby od 10 do 40, każda kolejna jest o 10 większa od poprzedniej. Mamy zatem taką oto listę:

lista od której zaczniemy omawianie operacji na listach w Pythonie

Na razie nic skomplikowanego. Oczywiście umiesz już wyświetlić taką listę i znasz kilka podstawowych operacji, które możesz na niej wykonać (jeśli nie to zapraszam tutaj). Zatem zobaczymy jak będzie ona wyglądać w terminalu.

kod i jego wynik, wyświetlający listę w Pytonie za pomocą instrukcji print

Oczywiście widzimy to czego mogliśmy się spodziewać, czyli naszą listę w całej okazałości 😉 Zawiera ona wspomniane elementy, a wyświetlenie jej za pomocą print() prezentuje jej zawartość w nawiasach. Przejdźmy teraz do czegoś ciekaweszego.

Wycinanie listy

Wspomniany w pierwszym akapicie slicing to, jak można się domyślać, to wycinanie - albo inaczej cięcie na plasterki (slice - plasterek). Polega to na wycięciu, za pomocą specjalnej składni, interesujących nas elementów listy. W praktyce sprowadza się to do wstawienia nawiasów prostokątnych po nazwie listy, a w nich umieszczamy zakres elementów do wycięcia. Mamy tutaj pewne podobieństwo do odwoływania się do konkretnego indeksu listy.

Konkretniej rzecz ujmując, w nawiasach po nazwie listy podajemy zakres w postaci, cyfry symbolizującej index elementu listy, od którego zaczynamy. Po nim wstawiamy dwukropek, a po dwukropku piszemy cyfrę oznaczającą liczbę elementów jakie chcemy wyciąć.

slicing operacja na liście w Pythonie oznaczająca wycinanie jej konkretnych elementów

Jak możemy zauważyć poniżej, nasza lista została skrócona do dwu elementów, to właśnie dzięki temu, że napisaliśmy cyfrę dwa po dwukropku. Dlaczego elementy o wartościach 10 i 20 akurat? No, jak się pewnie domyślacie, właśnie dlatego, że przed dwukropkiem stoi cyfra zero, co oznacza, że zaczynamy od elementu o indeksie właśnie zero, który ma wartość właśnie 10. Zaczynając zatem od elementu o indeksie 0, wycinamy następnie dwa elementy. Czyli element o indeksie zero i taki o indeksie jeden. Zatem finalnie mamy dwa wycięte elementy, o indeksach zero i jeden, a ich wartości to 10 i 20. Dlatego właśnie widzimy na ekranie liczby 10 i 20.

Slicing bez podawania jednej z danych

Możemy oczywiście manipulować zakresem dowolnie - zacząć od środka listy, czy też nie wpisać nic jako pierwszą wartość. Domyślnie Python zacznie od początku listy. Zatem jeśli zostawilibyśmy po dwukropku cyfrę dwa, ale przed nim nie wpisali nic, to efekt nie powinien ulec zmianie.

slicing, ale bez podania indeksu od jakiego zaczynamy - wycinanie w Pythonie

Na obrazku widzimy, że pomimo pominięcia pierwszej z wartości w nawiasie kwadratowym, po nazwie listy - slicing dalej działa. Co więcej efekt jest taki jakbyśmy wpisali przed dwukropkiem zero. Właśnie dlatego, że jeśli nie podamy wartości to Python zacznie od początku listy, czyli od indeksu zero. Odwrotnie, jeśli nie podamy liczby elementów do wycięcia - czyli cyfry po dwukropku - analogicznie Python zakończy dopiero wraz z końcem listy. Zatem jeśli usuniemy także naszą cyfrę dwa, otrzymamy całą listę.

Myślę, że powyższa grafika nie wymaga już komentarza, dla treningu możemy jeszcze sobie wpisać przed dwukropkiem cyfrę dwa co będzie oznaczało rozpoczęcie wycinania od elementu o indeksie dwa, czyli trzeciego elementu listy.

slicing w Pythonie rozpoczynając od elementu o indeksie dwa.

Powyżej otrzymaliśmy drugą połowę naszej listy. Właśnie dzięki tej dwójce wpisanej przed dwukropkiem tak to działa. Mamy tutaj wzięty jako pierwszy element, element stojący na indeksie dwa, a wycinamy do końca tablicy.

Zatem slicing działa od wspomnianego elementu, aż do końca. Dlatego elementy mamy dwa, bo po indeksie o numerku 2 jest tylko indeks o numerku 3.

Slicing może być też wykorzystywany na innym typie danych. Typ tekstowy bowiem, bo o nim mowa, również jest listą. Jest to lista znaków, zatem także możemy używać w jego przypadku przedstawionej składni. Mamy zatem różne typy, ale jedną i tą samą składnię, co jest bardzo korzystne 😉 Pomówmy zatem jakie jeszcze mamy operacje na listach.

Listy jak liczby

Operacje na listach, to dużo innych możliwości. Lista jest zbiorem wartości, na którym, co może być zaskakujące, możemy wykonywać działania matematyczne. Oczywiście nie wszystkie, ale możemy listy przykładowo dodawać. Na listach też można wykonywać mnożenie. Czyli podstawowe operatory arytmetyczne też mogą być stosowane do pracy z listami. Spójrzmy na przykład:

Łączenie list w Pythonie

Przykładowo możemy sobie stworzyć dwie listy i spróbować je dodać, tak jak powyżej. W wyniku dodania, powinniśmy po prostu otrzymać jedną listę składającą się z połączenia tych dwu. Sprawdźmy zatem co pokaże nam funkcja print.

wyświetlanie listy stworzonej z połączenie dwu innych w Pythonie

Jeśli dopiszemy do naszego kodu linijkę wyświetlającą naszą main_list. To otrzymamy listę, która powstała z dodanie my_list i my_list2, to jak widać, otrzymamy jedną wielką listę. Będzie ona zawierać elementy zarówno z jeden, jak i drugiej z połączonych list.

Mamy też możliwość dopisania jeszcze dodatkowo mnożenia do naszego działania na listach, co powinno pomnożyć nam drugą, z dodawanych list. Zobaczmy zatem czy tak się stanie.

Dodawanie i mnożenie list w Pythonie

Jak widzimy dopisaliśmy w naszym kodzie Pythona mnożenie. Teraz dodajemy nasze listy, ale drugą z nich jeszcze mnożymy przez dwa. W wyniku otrzymujemy jedną dużą listę. Lista ta zawiera wszystkie elementy list na nią się składających, ale zawiera też dwa razy elementy listy my_list2. Dzieje się właśnie z powodu naszej zmiany. Dodajemy po prostu listę drugą, ale po tym jak już zdublowano jej elementy.

Inne działania na listach

Jeśli chodzi o inne operacje na listach. Do list można stosować dużą część standardowych funkcji, przykładowo funkcje sprawdzające, takie jak len. Funkcja ta sprawdza długość danego jej łańcucha znaków, ale można ją też zastosować do naszej listy. Dostaniemy wtedy wielkość / długość listy.

sprawdzanie długości listy w Pythonie.

Gdy dopiszemy w naszym wyświetlający listę princie, wywołanie funkcji len, wraz z wynikową listą jako argument. Otrzymamy wartość 8, która będzie ilością elementów w liście. I, ku zdziwieniu tłumu, właśnie tyle elementów zawiera nasze utworzona wcześniej lista.

W odniesieniu do list w Pythonie, możemy także użyć operatorów takich jak in i not in. Operatory te pomogą nam stwierdzić czy coś zawiera się w liście lub nie, a odpowiedzią będzie logiczne true lub false.

użycie operatora in w kontekście listy w Pythonie

Jeśli naszym princie umieścimy konstrukcje mającą odpowiedzieć na pytanie. Pytanie natomiast będzie brzmiało czy w liście main_list zawiera się liczba 10. W takim wypadku w odpowiedzi dostaniemy True, bo jeden z elementów listy to właśnie 10. Gdybyśmy użyli operatora not in to pytanie brzmiałoby czy liczba 10 nie znajduje się na liście.

Użycie operatora not in w kontekście listy w Pythonie

Odpowiedź na tak postawione pytanie, w tym wypadku, jest oczywiście przecząca. Bowiem na naszej liście znajduje się liczba 10, zatem nie możemy potwierdzić, że się ona tam nie znajduje. Otrzymujemy zatem wartość logiczną False.

One comment on “Myśląc o Pythonie: Więcej operacji na listach”

Dodaj komentarz

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram