Tablice

Python SELF PL
Poziom 51 , Lekcja 3
Dostępny

4.1 Definicja tablicy i jej właściwości

Tablica to struktura danych, która jest uporządkowanym zbiorem elementów jednego typu, umieszczonymi w przyległych komórkach pamięci. Każdy element tablicy ma unikalny indeks, używany do uzyskania do niego dostępu.

Oto prosta tablica o rozmiarze 4, zawierająca elementy (1, 2, 3 i 4).

Definicja tablicy i jej właściwości

Właściwości tablicy:

  • Stały rozmiar: Rozmiar tablicy jest określany podczas jej tworzenia i nie może być zmieniany w trakcie działania programu.
  • Jednorodność elementów: Wszystkie elementy tablicy muszą być tego samego typu (np. liczby całkowite, napisy).
  • Sekwencyjne rozmieszczenie w pamięci: Elementy tablicy przechowywane są w przyległych komórkach pamięci, co zapewnia szybki dostęp po indeksie.
  • Szybki dostęp po indeksie: Dostęp do dowolnego elementu tablicy odbywa się w stałym czasie O(1).

4.2 Przykłady użycia tablic

Zobaczmy przykłady użycia tablic, które być może już znasz:

Przechowywanie danych o stałej długości

Dni tygodnia, miesiące roku:


# Tworzenie tablicy z dniami tygodnia
days_of_week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(days_of_week[2])  # Wyjście: Wednesday

Macierze i tablice wielowymiarowe

Macierz 3x3:


# Tworzenie macierzy 3x3
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
print(matrix[1][1])  # Wyjście: 5

Użycie w algorytmach sortowania

Sortowanie tablicy liczb:


# Sortowanie tablicy liczb
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()  # Sortowanie tablicy
print(numbers)  # Wyjście: [1, 2, 5, 5, 6, 9]

Bufor do przechowywania danych tymczasowych

Bufor do czytania danych z pliku:


# Tworzenie bufora o rozmiarze 1024 bajtów
buffer = [0] * 1024
print(len(buffer))  # Wyjście: 1024

4.3 Podstawowe operacje na tablicach

Ważne! Klasa list w Pythonie jest dynamiczną tablicą, może więc zmieniać swój rozmiar podczas działania programu. Więcej o dynamicznych tablicach dowiecie się w kolejnych wykładach.

Podstawowe operacje: dostęp po indeksie, wstawianie, usuwanie

Dostęp po indeksie

Dostęp do elementu tablicy realizowany jest za pomocą indeksu, który wskazuje na jego pozycję.


# Dostęp do elementów tablicy po indeksie
arr = [10, 20, 30, 40, 50]
print(arr[2])  # Wyjście: 30
print(arr[-1])  # Wyjście: 50 (ostatni element)

Wstawianie

Wstawienie elementu do tablicy może wymagać przesunięcia wszystkich kolejnych elementów, aby zrobić miejsce na nowy element.

Przykład (wstawienie elementu w środek tablicy):


# Wstawienie elementu do tablicy
arr = [10, 20, 30, 40, 50]
arr.insert(2, 25)  # Wstawienie 25 na pozycję 2
print(arr)  # Wyjście: [10, 20, 25, 30, 40, 50]

Usuwanie

Usunięcie elementu z tablicy może wymagać przesunięcia wszystkich kolejnych elementów, aby wypełnić zwolnione miejsce.

Przykład (usunięcie elementu):


# Usunięcie elementu z tablicy
arr = [10, 20, 30, 40, 50]
arr.pop(2)  # Usunięcie elementu na pozycji 2
print(arr)  # Wyjście: [10, 20, 40, 50]

4.4 Zalety i wady użycia tablic

Zobaczmy zalety i wady użycia tablic:

Zalety:

  • Szybki dostęp po indeksie: Dostęp do dowolnego elementu tablicy odbywa się w stałym czasie O(1), co czyni tablice bardzo efektywnymi do odczytu danych.
  • Prostota implementacji: Tablice są łatwe do zrozumienia i używania, łatwo je zaimplementować i zastosować w różnych zadaniach.
  • Niskie koszty dodatkowe: Tablice zajmują mniej pamięci w porównaniu do bardziej złożonych struktur danych, jak listy wiązane.

Wady:

  • Stały rozmiar: Rozmiar tablicy jest ustalany podczas jej tworzenia i nie może być zmieniany. To oznacza, że trzeba z góry znać potrzebny rozmiar tablicy lub używać dynamicznych tablic, które mogą się powiększać w miarę potrzeb.
  • Koszty wstawiania i usuwania: Wstawienie i usunięcie elementów może być czasochłonne, ponieważ wymaga przesunięcia elementów. W najgorszym przypadku wstawienie lub usunięcie elementu w środku tablicy zajmuje O(n) czasu.
  • Nieefektywne użycie pamięci: Jeśli tablica nie jest w pełni wykorzystywana, wtedy pozostałe komórki pamięci pozostają niewypełnione, co może prowadzić do nieefektywnego wykorzystania pamięci.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION