W pierwszej części pokazałem jak definiować listę oraz w jaki sposób odczytywać pojedyncze, lub całe grupy elementów listy. Operacji na listach i jej elementach jest nieco więcej. Raz utworzona lista nie jest obiektem stałym i można zarówno modyfikować wartość każdego z jej elementów jak i dodawać oraz usuwać poszczególne elementy. Listy w Python pozwalają na przeprowadzenie tych operacji w prosty sposób. W tym artykule zaprezentuję Ci jak to zrobić.
Dodawanie i edycja elementów listy
Zmiana wartości przypisanej do wskazanego elementu listy jest bardzo prosta. Wystarczy, że odwołamy się do wybranego elementu za pomocą jego indeksu i przypiszemy mu nową wartość.
>>> lista_a = [ 1, 2, 'trzy', 'cztery'] >>> lista_a [1, 2, 'trzy', 'cztery'] >>> lista_a[2] = 3 >>> lista_a [1, 2, 3, 'cztery']
Na liście możemy zapisać elementy różnych o różnych typach. Edytując wybrany element jego nowa wartość nie musi być tego samego typu co poprzednia.
Jeżeli chcemy dodać nowy element do listy nie możemy po prostu podać kolejnego, wydawałoby się wolnego indeksu listy. Nie jest to wolny element listy a niezaalokowany, w związu z czym nie możemy się do niego odwołać.
>>> lista_a[4] = 5 Traceback (most recent call last): File "", line 1, in IndexError: list assignment index out of range
Rozszerzenie listy o nowe elementy jest możliwe za pomocą metod append()
oraz extend()
. Pierwszej z nich używamy, gdy chcemy dodać jeden element, drugiej gdy jeden lub więcej elementów jednocześnie. Nowe elementy zostaną umieszczone na końcu listy.
>>> lista_a.append(5) >>> lista_a [1, 2, 3, 'cztery', 5] >>> lista_a.extend([6]) >>> lista_a [1, 2, 3, 'cztery', 5, 6] >>> lista_a.extend(['siedem', 8]) >>> lista_a [1, 2, 3, 'cztery', 5, 6, 'siedem', 8]
Pamiętaj, że korzystając z metody extend()
parametrem, który podajesz jako wartość wywołania metody jest lista, którą chcesz dołączyć na końcu swojej listy. Złączenie dwóch list możliwe jest też za pomocą operatora +
.
Dodawanie elementu w środku listy
A co jeżeli chcemy dodać nowy element w określone miejsce w środku istniejącej listy? Nic prostszego, mamy do tego metodę insert()
. Wywołując ją musimy podać dwa parametry – pierwszy to pozycja na liście, na której nowy element ma zostać umieszczony, drugi zaś wartość nowego elementu.
>>> lista_a = [ 1, 2, 'trzy', 'cztery'] >>> lista_a [1, 2, 'trzy', 'cztery'] >>> lista_a.insert(2, 2.5) >>> lista_a [1, 2, 2.5, 'trzy', 'cztery']
Pamiętajmy, że ta operacja zmieni numery indeksów elementów listy następujących po dodanym elemencie.
Usuwanie elementów z listy w Python
Usuwać elementy z listy w Python możemy na kilka sposobów. Nie możemy przy tym zapomnieć, że ta operacja spowoduje zmianę indeksów pozostałych elementów listy, chyba że usuwamy ostatni jej element.
Jeden lub wiele elementów listy usuniemy za pomocą słowa kluczowego del odwołując się za pomocą indeksów do poszczególnych elementów listy. Może być to pojedynczy indeks lub wycinek (slice), o którym pisałem w poprzedniej części.
>>> lista_a = [ 1, 2, 'trzy', 'cztery', 5, 6, 7] >>> lista_a [1, 2, 'trzy', 'cztery', 5, 6, 7] >>> del lista_a[2] >>> lista_a [1, 2, 'cztery', 5, 6, 7] >>> del lista_a[2:4] >>> lista_a [1, 2, 6, 7]
Pojedynczy element z listy wskazując jego indeks możemy usunąć także za pomocą metody pop()
. Różnica polega na tym, że posługując się słowem kluczowym del element po prostu usuwamy, to metoda pop()
oprócz jego usunięcia powoduje także jego zwrócenie. Pozwala to na przykad na przypisanie usuwanej wartości do innej zmiennej.
>>> lista_a = [ 1, 2, 'trzy', 'cztery', 5, 6, 7] >>> lista_a [1, 2, 'trzy', 'cztery', 5, 6, 7] >>> lista_a.pop(1) 2 >>> lista_a [1, 'trzy', 'cztery', 5, 6, 7]
Inna przydatna metoda to remove()
, za pomocą której usuwamy element listy o wskazanej wartości. Nie musimy znać indeksu, pod jakim się on znajduje na liście. Wystarczy, że znamy jego wartość.
>>> lista_a = [ 1, 2, 'trzy', 'cztery', 5, 6, 7] >>> lista_a [1, 2, 'trzy', 'cztery', 5, 6, 7] >>> lista_a.remove(2) >>> lista_a [1, 'trzy', 'cztery', 5, 6, 7]
Jeżeli na liście znajduje się więcej elementów o tej samej wartości metoda remove() zakończy swoje działanie po usunięciu pierwszego z nich. Zatem jeżeli na liście mamy wiele powtarzających się elementów musimu metodę remove() wywołać wielokrotnie. Jeżeli zaś na liście nie zostani znaleziony żaden element o wskazanej wartości metoda zwróci nam błąd typu ValueError.
>>> lista_a = [ 1, 2, 'trzy', 'cztery', 5, 6, 7, 5, 6] >>> lista_a [1, 2, 'trzy', 'cztery', 5, 6, 7, 5, 6] >>> lista_a.remove(5) >>> lista_a [1, 2, 'trzy', 'cztery', 6, 7, 5, 6] >>> lista_a.remove(5) >>> lista_a [1, 2, 'trzy', 'cztery', 6, 7, 6] >>> lista_a.remove(5) Traceback (most recent call last): File "", line 1, in ValueError: list.remove(x): x not in list
Czyszczenie i usuwanie listy w Python
Na koniec jeszcze dwie operacje na listach. Listę dowolnych rozmiarów szybko wyczyścimy za pomocą metody clear()
. Powoduje ona nic innego jak usunięcie wszystkich elementów listy pozostawiając nam do dyspozycji pustą listę.
>>> lista_a = [ 1, 2, 'trzy', 'cztery', 5, 6, 7, 5, 6] >>> lista_a [1, 2, 'trzy', 'cztery', 5, 6, 7, 5, 6] >>> lista_a.clear() >>> lista_a []
Możemy też usunąć całą zmienną z pamięci za pomocą znanego już słowa kluczowego del
.
>>> lista_a = [ 1, 2, 'trzy', 'cztery', 5, 6, 7, 5, 6] >>> lista_a [1, 2, 'trzy', 'cztery', 5, 6, 7, 5, 6] >>> del lista_a >>> lista_a Traceback (most recent call last): File "", line 1, in NameError: name 'lista_a' is not defined