TABLICE W PYTHON
TABLICE W PYTHON
Wyobraź sobie szufladę, w której możesz przechowywać różne przedmioty. Każdy przedmiot ma swoje miejsce, a ty łatwo możesz sięgnąć po ten, który potrzebujesz. W programowaniu taką szufladą jest tablica.
Co to jest tablica?
Tablica to uporządkowany zbiór elementów. Każdy element ma swoje unikalne miejsce, oznaczone numerem (indeksem). Dzięki temu możemy łatwo odwołać się do konkretnego elementu. W Pythonie tablice nazywamy listami.
Tablice jednowymiarowe
To najprostszy rodzaj tablic. Wyobraź sobie rząd szufladek. Każda szufladka zawiera jeden element.
# Przykład tablicy jednowymiarowej
lista_owoców = ["jabłko", "gruszka", "banan", "pomarańcza"]
W tym przykładzie stworzyliśmy listę (tablicę) o nazwie lista_owoców. Zawiera ona nazwy czterech owoców. Aby dostać się do drugiego elementu (gruszki), używamy indeksu:
print(lista_owoców[1]) # Wypisze: gruszka
Pamiętaj: Indeksowanie zaczyna się od 0, więc pierwszy element ma indeks 0, drugi 1 itd.
Tablice dwuwymiarowe
Wyobraź sobie tablicę szachową. To jest przykład tablicy dwuwymiarowej. Każde pole na szachownicy ma swoje współrzędne (wiersz i kolumna).
Python
# Przykład tablicy dwuwymiarowej
tablica_liczb = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
Tutaj stworzyliśmy tablicę 3x3, wypełnioną liczbami. Aby dostać się do liczby 5, używamy dwóch indeksów:
print(tablica_liczb[1][1]) # Wypisze: 5
Pierwszy indeks określa wiersz, drugi - kolumnę.
Tablice wielowymiarowe
To nic innego jak tablice, które zawierają w swoich elementach... inne tablice! Dzięki temu możemy tworzyć struktury danych o dowolnym stopniu złożoności.
Przykład tablicy trójwymiarowej:
Wyobraź sobie kostkę Rubika. Ma ona trzy wymiary: długość, szerokość i wysokość. Możemy stworzyć tablicę trójwymiarową, która będzie reprezentowała tę kostkę. Każdy element tej tablicy będzie odpowiadał jednej małej kostce.
kostka_rubika = [[['R', 'R', 'R'], ['R', 'R', 'R'], ['R', 'R', 'R']],
[['O', 'O', 'O'], ['O', 'O', 'O'], ['O', 'O', 'O']],
[['Y', 'Y', 'Y'], ['Y', 'Y', 'Y'], ['Y', 'Y', 'Y']],
[['B', 'B', 'B'], ['B', 'B', 'B'], ['B', 'B', 'B']],
[['G', 'G', 'G'], ['G', 'G', 'G'], ['G', 'G', 'G']],
[['W', 'W', 'W'], ['W', 'W', 'W'], ['W', 'W', 'W']]]
W tym przykładzie:
Każda lista zewnętrzna reprezentuje jeden poziom kostki.
Każda lista wewnętrzna reprezentuje jeden wiersz na tym poziomie.
Każdy element listy wewnętrznej reprezentuje jedną małą kostkę o określonym kolorze.
Dostęp do elementów:
Aby dostać się do konkretnej kostki, musimy podać trzy indeksy:
Pierwszy indeks: określa poziom kostki.
Drugi indeks: określa wiersz.
Trzeci indeks: określa kolumnę.
print(kostka_rubika[0][0][0]) # Wypisze: R
Tablice jednowymiarowe:
lista = [1, 2, 3, "tekst", True] # Lista mieszana
Tablice dwuwymiarowe:
macierz = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
Tablice wielowymiarowe:
tensor = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
Indeksowanie:
element = lista[2] # Dostęp do trzeciego elementu
wartosc = macierz[1][0] # Dostęp do elementu w drugim wierszu, pierwszej kolumnie
Slicing (po polsku: wycinanie) to mechanizm w Pythonie, który pozwala na pobieranie podlist z większej listy. Wyobraź sobie, że masz ciasto i chcesz wyciąć z niego kawałek. Slicing działa podobnie, tylko że zamiast ciasta, masz listę, a zamiast noża – indeksowanie. :
Jak to działa?
Do wykonania slicingu używamy notacji [start:stop:step].
start: Indeks pierwszego elementu, który chcemy uwzględnić (włącznie).
stop: Indeks elementu, który chcemy pominąć (wyłącznie).
step: Krok, czyli co ile elementów będziemy pobierać. Jeśli go pominiemy, domyślnie będzie to 1 (każdy element).
Przykład:
moja_lista = [1, 2, 3, 4, 5, 6, 7]
nowa_lista = moja_lista[2:5] utworzy listę [3, 4, 5], czyli elementy od indeksu 2 do 4 (wyłączając 5).
nowa_lista = moja_lista[::2] utworzy listę [1, 3, 5, 7], czyli co drugi element.
nowa_lista = moja_lista[::-1] odwróci listę, tworząc [7, 6, 5, 4, 3, 2, 1].
Przykłady z wyjaśnieniami:
Przypisanie:
lista[0] = "nowy element"
macierz[2][2] = 0
Metody:
append(x): Dodaje element x na koniec listy.
lista.append(5) # Dodaje 5 na koniec listy
insert(i, x): Wstawia element x na pozycję i.
lista.insert(2, "nowy") # Wstawia "nowy" na trzecie miejsce
remove(x): Usuwa pierwsze wystąpienie elementu x z listy.
lista.remove(3) # Usuwa pierwsze wystąpienie liczby
pop([i]): Usuwa i zwraca element na pozycji i (domyślnie ostatni).
ostatni_element = lista.pop()
clear(): Usuwa wszystkie elementy z listy.
lista.clear()
index(x): Zwraca indeks pierwszego wystąpienia elementu x.
indeks = lista.index("jabłko")
sort(): Sortuje listę na miejscu.
lista.sort() # Sortuje rosnąco
lista.sort(reverse=True) # Sortuje malejąco
reverse(): Odwraca kolejność elementów w liście.
lista.reverse()
copy(): Tworzy płytką kopię listy.
nowa_lista = lista.copy()
count(x): Zwraca liczbę wystąpień elementu x w liście.
liczba_wystapien = lista.count(2)
Długość:
dlugosc = len(lista)
Sprawdzanie przynależności:
if 3 in lista:
print("3 jest w liście")
Iterowanie:
for element in lista:
print(element)
Łączenie list:
nowa_lista = lista + [11, 12]
sum(): Suma elementów
max(): Największy element
min(): Najmniejszy element
sorted(): Posortowana kopia listy
def srednia_macierzy(macierz):
suma = 0
liczba_elementow = 0
for wiersz in macierz:
for element in wiersz:
suma += element
liczba_elementow += 1
return suma / liczba_elementow
macierz = [[1, 2, 3],
[4, 5, 6]]
srednia = srednia_macierzy(macierz)
print(srednia)
Ważne:
Indeksowanie zaczyna się od 0.
Typy elementów w liście mogą być różne.
Tablice są mutowalne, czyli ich zawartość można zmieniać.