Data: 7.07.2021

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_rycerzaJak 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_rycerzaFalse>>> "zbroja" in wyposażenie_rycerzaTrue>>>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ówwspólne = list(set(rycerz) & set(łucznik))print(wspólne)['tarcza']# Elementy unikalne dla rycerzatylko_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
