10.1 Cechy tablic dynamicznych
Tablice dynamiczne to struktury danych, które mogą zmieniać swój rozmiar podczas działania programu. Pozwalają one na efektywne zarządzanie kolekcją elementów, dodawanie i usuwanie elementów bez konieczności wcześniejszego określania rozmiaru tablicy.
W Pythonie listą dynamiczną jest lista (wbudowana klasa list), która pozwala na dodawanie, usuwanie i modyfikowanie elementów w dowolnej pozycji.

Cechy tablic dynamicznych:
- Zmieniający się rozmiar: Tablice dynamiczne mogą się zwiększać i zmniejszać w razie potrzeby.
- Szybki dostęp po indeksie: Dostęp do elementów jest realizowany w stałym czasie
O(1)
. - Automatyczne zarządzanie pamięcią: Python automatycznie zarządza przydziałem i zwalnianiem pamięci dla list.
- Wygodne metody do pracy z elementami: Wbudowane metody pozwalają łatwo dodawać, usuwać i modyfikować elementy.
Przykład tworzenia i użycia tablicy dynamicznej w Pythonie:
# Tworzenie listy
dynamic_array = [1, 2, 3, 4, 5]
# Dodawanie elementu
dynamic_array.append(6)
print(dynamic_array) # Wyjście: [1, 2, 3, 4, 5, 6]
# Usuwanie elementu
dynamic_array.remove(3)
print(dynamic_array) # Wyjście: [1, 2, 4, 5, 6]
# Dostęp po indeksie
print(dynamic_array[2]) # Wyjście: 4
# Zmiana elementu
dynamic_array[2] = 10
print(dynamic_array) # Wyjście: [1, 2, 10, 5, 6]
10.2 Zalety i wady tablic dynamicznych
Tablice dynamiczne mają swoje zalety i wady. Przyjrzyjmy się im bliżej.
Zalety:
- Elastyczność: Tablice dynamiczne mogą zmieniać rozmiar w zależności od potrzeb programu, co pozwala na efektywne zarządzanie pamięcią i przetwarzanie zmiennych ilości danych.
- Szybki dostęp po indeksie: Podobnie jak tablice statyczne, tablice dynamiczne pozwalają na szybki dostęp do elementów po indeksie w stałym czasie
O(1)
. - Wygodne użycie: Wbudowane metody Pythona do pracy z listami (np. append, remove, insert) ułatwiają manipulacje elementami i czynią kod bardziej czytelnym i łatwiejszym w utrzymaniu.
- Automatyczne zarządzanie pamięcią: Python automatycznie zarządza pamięcią dla tablic dynamicznych, co zwalnia programistę z konieczności ręcznego przydziału i zwalniania pamięci.
Wady:
- Przekształcenie pamięci: Przy zwiększaniu rozmiaru tablicy dynamicznej może być konieczne przekształcenie pamięci, co wiąże się z kopiowaniem elementów do nowego obszaru pamięci. Może to tymczasowo spowolnić działanie programu.
- Koszt wstawiania i usuwania elementów: Wstawianie i usuwanie elementów w środku tablicy wymaga przesuwania elementów, co zajmuje
O(n)
czasu. - Nieco większe koszty ogólne zarządzania: W porównaniu z językami niskopoziomowymi, takimi jak C, tablice dynamiczne w Pythonie mają dodatkowe koszty związane z automatycznym zarządzaniem pamięcią i obsługą wyjątków.
10.3 Przykłady użycia i zastosowania
Przyjrzyjmy się kilku przykładom użycia tablic dynamicznych w Pythonie.
1. Implementacja dynamicznej listy zadań:
tasks = []
# Dodawanie zadań
tasks.append("Task 1")
tasks.append("Task 2")
tasks.append("Task 3")
# Wykonanie zadania i usunięcie go z listy
completed_task = tasks.pop(0)
print(f"Completed: {completed_task}")
print(f"Remaining tasks: {tasks}") # Wyjście: Remaining tasks: ['Task 2', 'Task 3']
2. Implementacja dynamicznej listy obiektów:
students = []
# Dodawanie studentów
students.append("Alice")
students.append("Bob")
students.append("Charlie")
# Usunięcie studenta
students.remove("Bob")
print(f"Students after removal: {students}") # Wyjście: Students after removal: ['Alice', 'Charlie']
# Dodawanie studenta na określoną pozycję
students.insert(1, "David")
print(f"Students after insertion: {students}") # Wyjście: Students after insertion: ['Alice', 'David', 'Charlie']
GO TO FULL VERSION