Listy w Pythonie
Kategoria: Programowanie | Autor: P S
Opublikowano: 25.10.2025 19:37 | Ostatnia modyfikacja: 11.11.2025 10:38
Stwórzmy zmienną o nazwie liczby; ma ona przypisaną nie jedną liczbę, ale jest wypełniona listą (ang. list) składającą się z pięciu wartości (uwaga: lista zaczyna się od nawiasu otwierającego i kończy się nawiasem zamykającym; przestrzeń między nawiasami kwadratowymi jest wypełniona pięcioma liczbami oddzielonymi przecinkami).
liczby = [10, 5, 7, 2, 1]
Elementy wewnątrz listy mogą mieć różne typy. Niektóre z nich mogą być liczbami całkowitymi, inne to liczby zmiennoprzecinkowe, a jeszcze inne mogą być listami.
Język Python przyjął następującą konwencję: elementy na liście są zawsze ponumerowane od zera. Oznacza to, że element przechowywany na początku listy będzie miał numer zero. Ponieważ na naszej liście znajduje się pięć elementów, ostatni z nich ma przypisany numer cztery. Nasza lista to zbiór elementów, ale każdy element jest skalarem.
Przypiszmy nową wartość 111 do pierwszego elementu elementu na liście. Robimy to w ten sposób:
liczby[0] = 111
Możemy przypisać wartości do innych elementów listy:
liczby[2] = 120
liczby[1] = liczby[4]
Funkcja len()
Długość listy może się różnić podczas wykonywania kodu. Nowe elementy mogą zostać dodane do listy, a inne mogą zostać z niej usunięte. Oznacza to, że lista jest bardzo dynamicznym tworem. Jeśli chcesz sprawdzić aktualną długość listy, możesz użyć funkcji o nazwie len() (jej nazwa pochodzi od angielskiego słowa length - długość). Funkcja przyjmuje nazwę listy jako argument i zwraca liczbę elementów aktualnie przechowywanych w liście (innymi słowy – długość listy).
len(liczby)
Usuwanie elementów z listy
Każdy z elementów listy może zostać usunięty w dowolnym momencie – odbywa się to za pomocą instrukcji del (ang. delete, czyli usuń). Uwaga: to instrukcja, a nie funkcja.
Musisz wskazać element do usunięcia – zniknie on z listy, a długość listy zostanie zmniejszona o jeden.
liczby = [10, 5, 7, 2, 1] del liczby[1] print(len(liczby)) print(liczby)
Indeksy ujemne są dozwolone
Element z indeksem równym -1 jest ostatnim na liście.
Podobnie, element o indeksie równym -2 jest jest przedostatnim na liście.
liczby = [111, 7, 2, 1] print(liczby[-1]) print(liczby[-2])
Dodawanie elementów do listy: metody append() i insert()
Metoda jest specyficznym rodzajem funkcji - zachowuje się jak funkcja i wygląda jak funkcja, ale różni się sposobem działania i sposobem wywołania.
Funkcja nie należy do żadnych danych - pobiera dane, może tworzyć nowe dane i generalnie daje wynik.
Metoda robi wszystkie te rzeczy, ale jest również w stanie zmienić stan wybranej jednostki.
Metoda jest własnością danych, na których operuje, podczas gdy funkcja jest własnością całego kodu.
Nowy element może być przyklejony do końca istniejącej listy:
lista.append(wartość)
Taką operację wykonuje się za pomocą metody o nazwie append(). Przyjmuje ona wartość argumentu i umieszcza go na końcu listy do której należy ta metoda.
Długość listy wzrasta o jeden.
Metoda insert() jest nieco mądrzejsza – może dodać nowy element w dowolnym miejscu na liście, nie tylko na końcu.
lista.insert(miejsce, wartość)
Wymaga ona dwóch argumentów:
- pierwszy pokazuje wymaganą lokalizację wstawianego elementu; uwaga: wszystkie istniejące elementy, które zajmują lokalizacje po prawej stronie nowego elementu (w tym ten we wskazanej pozycji) przesuwają się w prawo, aby zrobić miejsce na nowy element,
- drugi to element do wstawienia.
liczby = [111, 7, 2, 1] print(len(liczby)) print(liczby) ### liczby.append(4) print(len(liczby)) print(liczby) ### liczby.insert(0, 222) print(len(liczby)) print(liczby)
Możesz stworzyć pustą listę (odbywa się to za pomocą pustej pary nawiasów kwadratowych), a następnie dodawać w razie potrzeby nowe elementy.
moja_lista = [] # Tworzenie pustej listy.
for i in range(5):
moja_lista.append(i + 1)
print(moja_lista)
Korzystanie z list
moja_lista = [10, 1, 8, 3, 5]
suma = 0
for i in moja_lista:
sum += i
print(suma)
- pętla
forokreśla zmienną używaną do przeglądania listy (w tym wypadkui), a następnie słowo kluczoweini nazwę przetwarzanej listy (moja_lista) - zmiennej
isą przypisane wartości wszystkich kolejnych elementów listy, a proces odbywa się tyle razy, ile jest elementów na liście, - oznacza to, że używasz zmiennej
ijako kopii wartości elementów i nie musisz używać indeksów.
Możesz łatwo zamienić elementy listy, aby odwrócić ich kolejność:
lista = [10, 1, 8, 3, 5] lista[0], lista[4] = lista[4], lista[0] lista[1], lista[3] = lista[3], lista[1] print(lista)
Możemy to samo zrobić dla listy, niezależnie od jej długości.
lista = [10, 1, 8, 3, 5]
d = len(lista)
for i in range(d // 2):
lista[i], lista[d - i - 1] = lista[d - i - 1], lista[i]
print(lista)
- przypisaliśmy zmiennej
dbieżącą długością listy (dzięki temu nasz kod jest nieco bardziej przejrzysty i krótszy) - uruchomiliśmy pętlę
for, aby przeszła przez ciałod // 2razy (działa to z powodzeniem dla list o parzystych i nieparzystych długościach, ponieważ gdy lista zawiera nieparzystą liczbę elementów, środkowy pozostaje nietknięty) - zamieniliśmy enty element
i(from the beginning of the list) (z początku listy) z elementem z indeksem równym(d - i - 1)(od końca listy); w naszym przykładzie, dlaio wartości równej0(d - i - 1)daje4; dlaio wartości1, daje3– dokładnie tego potrzebowaliśmy.
Listy (i wiele innych złożonych elementów języka Pythona) są przechowywane inaczej niż zwykłe (skalarne) zmienne. Nazwa listy jest nazwą miejsca w pamięci, w którym przechowywana jest lista.
lista_1 = [1] lista_2 = lista_1 lista_1[0] = 2 print(lista_2)
Wycinki
Wycinek to element składni języka Python, który umożliwia tworzenie zupełnie nowej kopii listy lub jej części. W rzeczywistości kopiuje zawartość listy, a nie nazwę listy.
lista_1 = [1] lista_2 = lista_1[:] lista_1[0] = 2 print(lista_2)
Ta niepozorna część kodu opisana jako [:] jest w stanie stworzyć zupełnie nową listę.
Jedna z najbardziej ogólnych postaci wycinka wygląda następująco:
lista[start:end]
# Kopiowanie całej listy. lista_1 = [1] lista_2 = lista_1[:] lista_1[0] = 2 print(lista_2) # Kopiowanie części listy. lista = [10, 8, 6, 4, 2] nowa_lista = lista[1:3] print(nowa_lista) #Wycinki z ujemnymi indeksami lista = [10, 8, 6, 4, 2] nowa_lista = lista[1:-1] print(nowa_lista)
Opisana wcześniej instrukcja del może usunąć więcej niż tylko jeden element listy na raz – może również usunąć wycinki:
lista = [10, 8, 6, 4, 2] del lista[1:3] print(lista)
Operatory in i not in
Język Python oferuje dwa bardzo potężne operatory, które mogą przeglądać listę w celu sprawdzenia, czy określona wartość jest przechowywana na liście, czy nie.
Pierwszy z nich (in) sprawdza, czy dany element (jego lewy argument) jest aktualnie przechowywany gdzieś wewnątrz listy (prawy argument) – operator podaje True w tym przypadku.
Drugi (not in) sprawdza, czy dany element (jego lewy argument) jest nieobecny na liście – operator zwraca True w tym przypadku.
lista = [0, 3, 12, 8, 2] print(5 in lista) print(5 not in lista) print(12 in lista)
Listy w listach
Do tej pory mówiliśmy, że listy składają się ze skalarów (mianowicie liczb), ale w rzeczywistości listy mogą zawierać elementy o znacznie bardziej złożonej strukturze.
Wyrażenie listowe jest listą tworzoną „w biegu” podczas wykonywania programu, nie opisaną statycznie. Wyrażenie:
kwadraty = [x ** 2 for x in range(10)]
tworzy listę 10-elementową wypełnioną kwadratami (drugą potęgą) liczb całkowitych, począwszy od zera (0, 1, 4, 9, 16, 25, 36, 49, 64, 81)
dwojki = [2 ** i for i in range(8)]
tworzy 8-elementową tablicę zawierającą pierwsze osiem wyników operacji podnoszenia liczby 2 do kolejnych potęg (1, 2, 4, 8, 16, 32, 64, 128)
nieparzyste = [x for x in kwadraty if x % 2 != 0 ]
tworzy listę zawierającą tylko nieparzyste elementy listy kwadraty list.
Poniżej przykład dwuwymiarowej tablicy reprezentującej szachownicę:
PUSTY = "-"
WIEZA = "WIEZA"
szachownica = []
for i in range(8):
rzad = [PUSTY for i in range(8)]
szachownica.append(rzad)
szachownica[0][0] = WIEZA
szachownica[0][7] = WIEZA
szachownica[7][0] = WIEZA
szachownica[7][7] = WIEZA
print(szachownica)
Język Python nie ogranicza głębokości zawierania listy w liście. Możemy tworzyć listy bardziej rozbudowane.