CodeGym /Kursy /Python SELF PL /Tablice o stałym rozmiarze

Tablice o stałym rozmiarze

Python SELF PL
Poziom 52 , Lekcja 2
Dostępny

9.1 Cechy tablic o stałym rozmiarze

Tablice o stałym rozmiarze — to tablice, których rozmiar określany jest w momencie ich tworzenia i nie może się zmieniać w trakcie działania programu. W Pythonie tablice o stałym rozmiarze można stworzyć za pomocą biblioteki array lub użyć list, chociaż listy w Pythonie mogą zmieniać rozmiar, są używane podobnie do tablic w innych językach.

Cechy tablic o stałym rozmiarze:

  • Stały rozmiar: Rozmiar tablicy ustalany jest przy jej tworzeniu i nie może być zmieniony.
  • Jednorodność: Wszystkie elementy tablicy muszą być tego samego typu.
  • Szybki dostęp przez indeks: Dostęp do elementów tablicy odbywa się w stałym czasie O(1).
  • Niezmienność rozmiaru: Liczba elementów tablicy pozostaje niezmienna, niemożliwe jest dodawanie nowych elementów.

Przykład tworzenia tablicy o stałym rozmiarze w Pythonie:

Używając biblioteki array:


import array

# Tworzenie tablicy z liczb całkowitych (typ 'i' dla int)
arr = array.array('i', [1, 2, 3, 4, 5])

# Dostęp do elementów
print(arr[2])  # Wyjście: 3

# Zmiana wartości elementu
arr[2] = 10
print(arr)  # Wyjście: array('i', [1, 2, 10, 4, 5])

Używając listy (imitując tablicę o stałym rozmiarze):


# Tworzenie listy o stałym rozmiarze
arr = [0] * 5

# Inicjalizacja elementów
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5

# Dostęp do elementów
print(arr[2])  # Wyjście: 3

# Zmiana wartości elementu
arr[2] = 10
print(arr)  # Wyjście: [1, 2, 10, 4, 5]

9.2 Zalety i wady tablic o stałym rozmiarze

Wszystko ma swoje mocne i słabe strony, mają je też tablice o stałym rozmiarze.

Zalety:

  • Szybki dostęp przez indeks: Dostęp do dowolnego elementu tablicy odbywa się w stałym czasie O(1), co czyni tablice bardzo wydajnymi przy odczycie danych.
  • Prostota implementacji: Tablice są proste do zrozumienia i użycia, łatwo je zaimplementować i stosować w różnych zadaniach.
  • Efektywne wykorzystanie pamięci: Ponieważ rozmiar tablicy jest stały, pamięć jest przydzielana od razu przy jej tworzeniu, co pozwala uniknąć kosztów ponownego przydzielania pamięci.
  • Przewidywalność: Stały rozmiar tablicy ułatwia zarządzanie pamięcią i przewidywalność wykorzystania zasobów.

Wady:

  • Nie zmienność rozmiaru: Rozmiar tablicy ustalany jest przy jej tworzeniu i nie może być zmieniony. To oznacza, że trzeba z góry znać potrzebny rozmiar tablicy lub ryzykować nadmiernym przydzieleniem pamięci.
  • Koszty wstawiania i usuwania: Wstawianie i usuwanie elementów mogą być kosztowne czasowo, ponieważ wymagają przesuwania elementów. W najgorszym przypadku wstawienie lub usunięcie elementu w środku tablicy zajmuje O(n) czasu.
  • Nieefektywne wykorzystanie pamięci: Jeśli tablica nie jest wykorzystywana w pełni, nieużywane komórki pamięci pozostają puste, co może prowadzić do nieefektywnego wykorzystania pamięci.
  • Ograniczona elastyczność: Tablice nie pozwalają na dynamiczną zmianę rozmiaru, co czyni je mniej elastycznymi w porównaniu z dynamicznymi strukturami danych, takimi jak listy.

9.3 Przykłady zastosowania i wykorzystania

Oto kilka przykładów zastosowania i wykorzystania tablic o stałym rozmiarze.

Przykład 1: Tabele i macierze

Tablice o stałym rozmiarze są często używane do reprezentacji tabel i macierzy, gdzie rozmiar jest znany z góry.


import numpy as np

# Tworzenie macierzy 3x3 o stałym rozmiarze
matrix = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])

# Dostęp do elementów macierzy
print(matrix[1][2])  # Wyjście: 6

# Zmiana elementu macierzy
matrix[1][2] = 10
print(matrix)
# Wyjście:
# [[ 1  2  3]
#  [ 4  5 10]
#  [ 7  8  9]]

Przykład 2: Bufory i cache

Tablice o stałym rozmiarze są używane do tworzenia buforów i cache, gdzie rozmiar bufora jest znany z góry i nie zmienia się.


# Bufor o stałym rozmiarze do odczytu danych
buffer_size = 1024
buffer = bytearray(buffer_size)

# Wypełnienie bufora danymi
data = b"Hello, World!"
buffer[:len(data)] = data

print(buffer[:len(data)])  # Wyjście: b'Hello, World!'

Przykład 3: Przechowywanie danych o czasie i datach

Tablice o stałym rozmiarze mogą być używane do przechowywania danych o czasie i datach, takich jak liczba dni w każdym miesiącu.

W tym przykładzie emulujemy zachowanie stałej tablicy przez klasę list:


# Liczba dni w każdym miesiącu (rok nieprzestępny)
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

# Dostęp do danych
month = 2  # Luty
print(f"W lutym {days_in_month[month - 1]} dni")  # Wyjście: W lutym 28 dni
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION