Data: 7.07.2021

Jak używać listy w Pythonie?

Python lista

Spis treści

Z artykułu Python lista dowiesz się, w jaki sposób utworzyć listę w języku Python, do czego ona służy oraz w jaki sposób używać listy w programie.

Python lista – co to jest lista w Pythonie?

Lista (tablica) to uporządkowana kolekcja elementów.

W języku angielskim dla określenia listy używa się słów: array, vector, matrix, list.

Listy tworzy się za pomocą nawiasów kwadratowych, oddzielając elementy przecinkami np. [a, b, c]

Właściwości listy:

  • reprezentuje wszystkie możliwości krotki, ale jest mutowalna – można dodawać lub usuwać z niej elementy
  • związana jest z obsługą sekwencji informacji
  • może być pusta lub zawierać tylko jeden element
  • może zawierać inne listy
  • może przechowywać różne typy danych np. łańcuchy znaków, krotki, listy, słowniki, funkcje, obiekty plików i dowolne rodzaje liczb
  • możliwe jest odnoszenie się do podzbiorów, czy wycinków listy (ang. slice)

Jak utworzyć listę?

W Pythonie listy są pisane w nawiasach kwadratowych. Aby utworzyć listę napiszemy następujący kod:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> print(wyposażenie_rycerza)
['miecz', 'zbroja', 'tarcza']
>>>

Jak odczytać element z listy Pythona?

Dostęp do elementów listy można uzyskać, odwołując się do numeru indeksu. Jako indeksów możemy używać dodatnich i ujemnych liczb całkowitych:

  • liczby dodatnie oznaczają dostęp do początkowych elementów listy od zera do ostatniego elementu
  • liczby ujemne oznaczają dostęp do końcowych elementów listy: -1 do pierwszego od końca, -2 do drugiego itd.

Można odwołać się do wszystkich elementów listy numerując je od początku lub od końca.

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> print(wyposażenie_rycerza [1])
zbroja
>>>

W Pythonie listy są indeksowane od zera. Dlatego powyższy kod zwraca słowo „zbroja”.

Drugi przykład:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> print(wyposażenie_rycerza [-1])
tarcza
>>>

Możemy odczytywać wybiórczo zawartość poszczególnych elementów listy, tak jak w powyższych przykładach, lub całe ciągi elementów. Aby odczytać ciąg elementów na liście, należy podać numer indeksu, od którego mają zostać odczytane elementy z listy oraz dwukropek. Wówczas odczytane zostaną wszystkie elementy, zaczynając od wskazanego indeksu aż do końca listy:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> wyposażenie_rycerza [1:]
['zbroja', 'tarcza']
>>>

Możliwe jest też odczytanie co któregoś elementu listy. W poniższym przykładzie odczytujemy co drugi element:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza","hełm"]
>>> wyposażenie_rycerza[::2]
['miecz', 'tarcza']
>>>

Jak zmodyfikować listę Pythona?

Listy są sekwencjami zmiennymi, można więc je modyfikować. Aby zmienić wartość określonego elementu na liście, należy odnieść się do jego indeksu:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> wyposażenie_rycerza[1] = "hełm"
>>> print(wyposażenie_rycerza)
['miecz', 'hełm', 'tarcza']
>>>

Jak usunąć element z listy w Pythonie?

Elementy ze środka listy można usuwać za pomocą słowa kluczowego del:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza", "hełm"]
>>> del wyposażenie_rycerza[2]
>>> wyposażenie_rycerza
['miecz', 'zbroja', 'hełm']
>>>

Za pomocą słowa kluczowego del można też całkowicie usunąć listę:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida"]
>>> del wyposażenie_rycerza

Jak sprawdzić zawartość listy w Pythonie?

Zawartość list można sprawdzać. Aby sprawdzić, czy określona wartość znajduje się na liście, używamy operatora in:

>>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
>>> "łuk" in wyposażenie_rycerza
False
>>> "zbroja" in wyposażenie_rycerza
True
>>>

W wyniku otrzymamy wartość logiczną:

  • „TRUE”, jeśli element znajduje się na liście
  • „FALSE”, jeśli elementu nie ma na liście

Drugi przykład:

wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
if "miecz" in wyposażenie_rycerza:
print("Tak, 'miecz' jest na liście wyposażenia")

W przykładzie kod z instrukcją „if” należy dwa razy zaakceptować przyciskiem Enter, aby wyświetlił się napis „Tak, 'miecz’ jest na liście wyposażenia”.

Uwaga! W Pythonie ważne są wcięcia. Jeśli wcięcia kodu są zrobione nieprawidłowo, kod się nie uruchomi.

Elementy listy można przeglądać za pomocą pętli for:

wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
for x in wyposażenie_rycerza:
print(x)

W przykładzie kod z instrukcją „for” należy dwa razy zaakceptować przyciskiem Enter.

Jak porównywać listy w Pythonie?

Listy można porównywać. Porównywanie list odbywa się na zasadzie porównywania poszczególnych elementów:

  • listy są równe, jeżeli elementy obydwu list są sobie równe
  • listy są nierówne, jeżeli różnią się choć jednym elementem
  • pierwsza lista jest większa od drugiej, jeżeli pierwszy element pierwszej listy jest większy od pierwszego elementu drugiej listy
  • element nieistniejący jest zawsze mniejszy od każdego innego elementu
rycerz = ["miecz", "zbroja", "tarcza", "hełm"]
łucznik = ["łuk", "strzały", "tarcza"]
# Znajdowanie wspólnych elementów
wspólne = list(set(rycerz) & set(łucznik))
print(wspólne)
['tarcza']
# Elementy unikalne dla rycerza
tylko_rycerz = list(set(rycerz) - set(łucznik))
print(tylko_rycerz)
['zbroja', 'hełm', 'miecz']

Listy wielopoziomowe

W przypadku list wielopoziomowych, które zawierają inne listy możliwy jest dostęp do poszczególnych elementów list podrzędnych poprzez użycie dwóch indeksów. Jako pierwszy podajemy zawsze indeks listy wyższego rzędu.

>>> lista = [[1,2,3,4,5],["tarcza","zbroja","miecz","hełm"]]
>>> lista[1][0];lista[0][2]
'tarcza'
3
>>>

Dostępne metody listy:

>>> dir([])
['__add__', '__class__', '__contains__', '__delattr__',
'__delitem__', '__dir__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__getitem__', '__gt__',
'__hash__', '__iadd__', '__imul__', '__init__',
'__init_subclass__', '__iter__', '__le__', '__len__',
'__lt__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__reversed__',
'__rmul__', '__setattr__', '__setitem__', '__sizeof__',
'__str__', '__subclasshook__', 'append', 'clear', 'copy',
'count', 'extend', 'index', 'insert', 'pop',
'remove', 'reverse', 'sort']
>>>

Przykłady wykorzystania niektórych metod:

  • metoda len() – określenie, ile elementów ma lista

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
    >>> len(wyposażenie_rycerza)
    3
    >>>
  • metoda append() – dodanie elementu na końcu listy

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
    >>> wyposażenie_rycerza.append("dzida")
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja', 'tarcza', 'dzida']
    >>>
  • metoda insert() – dodanie elementu o określonym indeksie

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "tarcza"]
    >>> wyposażenie_rycerza.insert(2,"dzida")
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja', 'dzida', 'tarcza']
    >>>
  • metoda remove() – usunięcie z listy określonego elementu

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida"]
    >>> wyposażenie_rycerza.remove("dzida")
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja']
    >>>
  • metoda pop() – usunięcie określonego indeksu lub ostatniego elementu, jeśli indeks nie został określony:

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida"]
    >>> wyposażenie_rycerza.pop(2)
    'dzida'
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja']
    >>>

    Drugi przykład – nie podajemy indeksu:

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida"]
    >>> wyposażenie_rycerza.pop()
    'dzida'
    >>> print(wyposażenie_rycerza)
    ['miecz', 'zbroja']
    >>>
  • metoda clear() – wyczyszczenie listy:

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida"]
    >>> wyposażenie_rycerza.clear()
    >>> print(wyposażenie_rycerza)
    []
    >>>
  • metoda copy() – skopiowanie listy:

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida"]
    >>> nowe_wyposażenie = wyposażenie_rycerza.copy()
    >>> print(nowe_wyposażenie)
    ['miecz', 'zbroja', 'dzida']
    >>>
  • metoda list() – skopiowanie listy:

    >>> wyposażenie_rycerza = ["miecz", "zbroja", "dzida"]
    >>> nowe_wyposażenie = list(wyposażenie_rycerza)
    >>> print(nowe_wyposażenie)
    ['miecz', 'zbroja', 'dzida']
    >>>

Informacje na temat krotek znajdziesz w artykule Python krotka

Powyższe ćwiczenia oraz wiele innych przykładów znajdziesz na naszym szkoleniu Python poziom podstawowy

Rafał Lelusz
Rafał Lelusz
Programista Python, C#
Udostępnij wpis:udostępnij Facebookudostępnij Linkedinudostępnij e-mail

Polecane