Przejdź do treści
Strona główna » Darmowy kurs Python online » Python: listy

Python: listy

Czym jest lista?

Lista jest jednym z wbudowanych typów danych w Pythonie i służy do przechowywania wielu elementów w jednej zmiennej. Język Python dostarcza szereg użytecznych funkcji, które pozwalają na efektywne wykonywanie operacji na danych zawartych w listach. Umiejętność korzystania z list jest niezbędna dla każdego programisty.

Tworzenie list w języku Python

Aby utworzyć listę w Pythonie, używamy nawiasów kwadratowych ([]), tak jak w poniższym przykładzie:

Python
lista_owocow = ["jablko", "banan", "gruszka"]

W powyższym przykładzie stworzyliśmy listę trzech elementów typu tekstowego (string).

Możemy również tworzyć listę, której elementy nie są tego samego typu, na przykład:

Python
lista1 = ["teskt1", 43, True, 40, "banan"]

W powyższym przykładzie lista zawiera elementy typu string, int oraz boolean.

Dostęp do elementów listy

Najprostszym sposobem uzyskania dostępu do elementu listy to użycie jego indeksu. Pamiętajmy przy tym, że indeksowanie zaczyna się od wartości 0.

Python
lista_owocow = ["jablko", "banan", "gruszka"]
print(lista_owocow[0]) # jablko
print(lista_owocow[2]) # gruszka

Tekst po „#” w powyższym przykładzie to komentarz programu, w którym pokazałem wynik działania danej instruckcji. Tym sposobem będę się posługiwał w kolejnych przykładach.

Indeksować możemy również od końca. Element „-1” to element ostatni w liście, „-2” to przedostatni itd. Wykorzystując listę z poprzedniego przykładu, wydrukowanie na konsolę elementu „-1” skutkuje napisem „gruszka”, a elementu „-2” napisem „banan”, jak w poniższym przykładzie.

Python
lista_owocow = ["jablko", "banan", "gruszka"]
print(lista_owocow[-1]) # gruszka
print(lista_owocow[-2]) # banan

Sprawdzanie rozmiaru listy

Aby znaleźć długość listy, używamy wbudowanej metody len().

Python
print(len(lista_owocow)) # 3

Dodawanie i usuwanie elemntów do listy

Metoda append()

Dodanie elementu na koniec listy wykonujemy przy użyciu metody append().

Python
lista_owocow = ["jablko", "banan", "gruszka"]
lista_owocow.append("wisnia")
print(lista_owocow) # ['jablko', 'banan', 'gruszka', 'wisnia']

Metoda insert()

Metoda append() działa tylko w przypadku dodawania elementów na końcu listy. W celu dodania elementów w żądanej pozycji używamy metody insert(). Metoda insert() wymaga dwóch argumentów (pozycja, wartość).

Python
lista_owocow = ["jablko", "banan", "gruszka"]
lista_owocow.insert(2, "malina")
print(lista_owocow) # ['jablko', 'banan', 'malina', 'gruszka']

Element „malina” został wstawiony na pozycji „2”, czyli w miejscu, gdzie wcześniej znajdowała się „gruszka”.

Metoda remove()

Metoda remove() usuwa pierwszy pasujący element (który jest przekazywany jako argument) z listy.

Python
lista_owocow = ["jablko", "banan", "gruszka"]
lista_owocow.remove("banan")
print(lista_owocow) # ['jablko', 'gruszka']

Jeśli lista zawiera więcej niż jeden pasujący element, to metoda remove() usuwa pierwszy z nich.

Metoda pop()

Metda pop() usuwa i zwraca domyślnie ostatni element listy. Aby usunąć element z określonej pozycji Listy, przekazywany jest indeks elementu jako argument metody pop().

Python
lista_owocow = ["jablko", "banan", "gruszka"]
lista_owocow.pop()
print(lista_owocow) # ['jablko', 'banan']
lista_owocow.pop(0)
print(lista_owocow) # ['banan']

Odwracanie listy

Listę odwracamy korzystając z metody reverse():

Python
lista_owocow = ["jablko", "banan", "gruszka"]
lista_owocow.reverse()
print(lista_owocow) # ['gruszka', 'banan', 'jablko']

Cięcie (slicing)

Wyrażenie lista[start:stop] zwraca część listy od indeksu start do indeksu stop.

Python
lista_owocow = ['jablko', 'banan', 'malina', 'gruszka']
print(lista_owocow[1:3]) # ['banan', 'malina']
print(lista_owocow[0:2]) # ['jablko', 'banan']

W powyższym przykładzie odwołanie się do elementów „1:3” zwraca elemeny znajdujące się na pozycjach 1 i 2. Indeks stop (3) nie jest uwzględniany, co wynika ze sposobu, w jaki przechowywane są dane w pamięci komputera.

Cięcia listy możemy dokonać jeszcze na kilka sposobów:

  • dostęp od początku do wybranego położenia:

[:indeks]

  • dostęp od wybranego położenia do końca listy:

[indeks:]

  • dostęp do co drugiego elementu listy:

[::2]

Wyrażenia listowe (list comprehension)

List comprehesion niestety nie posiada adekwatnego tłumaczenia na język polski. W niektórych artykułach możemy znaleźć termin „listy składane” lub „wyrażenia listowe”. Będę używał tego drugiego określenia, które lepiej odzwierciedla angielski termin. Wyrażenia listowe oferują krótką składnię, w sytuacjach gdy chcemy utworzyć nową listę na podstawie istniejącej listy. Rozważmy następujący przykład. Chcemy utworzyć listę owoców, wybierając z listy lista_owoców te owoce, które posiadają w nazwie literę „k”. Do tego celu musimy stworzyć pętlę for:

Python
lista_owocow = ["jablko", "banan", "gruszka"]
nowa_lista_owocow = []

for x in lista_owocow:
  if "k" in x:
    nowa_lista_owocow.append(x)

print(nowa_lista_owocow) # ['jablko', 'gruszka']

Przy użyciu wyrażenia listowego, ten sam efekt możemy uzyskać znacznie prościej:

Python
nowa_lista_owocow = [x for x in lista_owocow if "k" in x]

print(nowa_lista_owocow) # ['jablko', 'gruszka']

Aby zrozumieć powyższy przykład przyjrzyjmy się składni:

nowa_lista = [ wyrażenie(element) for element in stara_list if warunek]

List comprehension przechodzi przez wszystkie elementy listy i za każdym razem zwraca wynik wyrażenia jeśli spełniony jest określony warunek. W kontekście naszego przykładu mamy:

  • wyrażenie: x
  • warunek: „k” in x

Wynikiem wyrażenia „x” jest „x” czyli element starej listy.

Sortowanie listy

Metoda sort() domyślnie sortuje elementy listy.w sposób rosnący. W przypadku tekstu jest to sortowanie alfabetyczne, tak jak w poniższym przykładzie.

Python
lista_owocow = ["jablko", "banan", "gruszka"]
lista_owocow.sort()
print(lista_owocow) # ['banan', 'gruszka', 'jablko']

Możemy także utworzyć kryteria sortowania, stosując następującą składnię:

lista.sort(reverse=True|False, key=funkcja)

Dla przykładu posortujmy listę od największego do najmniejszego elementu.

Python
lista_owocow = ["jablko", "banan", "gruszka"]
lista_owocow.sort(reverse=True)
print(lista_owocow) # ['jablko', 'gruszka', 'banan']

W kolejnym przykładzie posortujemy listę ze względu na długość elementów. W tym celu tworzymy funkcję, która zwraca długość elementu, którą następnie wykorzystujemy jako argument metody sort().

Python
def dlugosc(e):
  return len(e)
lista_owocow = ["jablko", "banan", "gruszka"]
lista_owocow.sort(key=dlugosc)
print(lista_owocow) # ['banan', 'jablko', 'gruszka']

Inne operacje na listach

Poniżej zestawiłem inne, przykładowe metody do operacji na listach:

  • extend() – Dodaje wszystkie elementy listy do innej listy
  • clear() – Usuwa wszystkie elementy z listy
  • index() – Zwraca indeks pierwszego dopasowanego elementu
  • count() – Zwraca liczbę elementów przekazanych jako argument
  • copy() – Zwraca kopię listy

Podsumowanie

Z artykułu dowiedziałeś się czym jest lista w języku Python oraz jak wykonywać podstawowe operacje na listach, takie jak:

  • tworzenie
  • dodawanie i usuwanie elementów
  • cięcie
  • odwracanie
  • wyrażenia listowe
Szymon Skoneczny

O autorze

Dr hab. inż. Szymon Skoneczny specjalizuje się w informatyce przemysłowej i symulacjach komputerowych. Współpracował z takimi uczelniami jak Politechnika Krakowska i Akademia Górniczo-Hutnicza oraz firmami, m. in. Siemens, Electricite de Fracne, ArcelorMittal.