10.1 Dinamik massivlərin xüsusiyyətləri
Dinamik massivlər — proqramın icrası zamanı ölçüsünü dəyişə bilən məlumat strukturlarıdır. Onlar elementlər kolleksiyasını səmərəli idarə etməyə, elementləri əlavə etməyə və silməyə imkan verir və massiv ölçüsünü əvvəlcədən təyin etməyə ehtiyac qoymur.
Python-da dinamik massiv kimi siyahı (daxili list sinfi) istifadə olunur, bu da elementləri istənilən mövqedə əlavə etməyə, silməyə və dəyişdirməyə imkan verir.
Dinamik massivlərin xüsusiyyətləri:
- Dəyişdirilə bilən ölçü: Dinamik massivlər lazım olduqda böyüyə və ya kiçilə bilər.
- İndekslə sürətli giriş: Elementlərə daimi vaxtda
O(1)daxil olmaq mümkündür. - Avtomatik yaddaş idarəsi: Python siyahılar üçün yaddaşın ayrılmasını və sərbəst buraxılmasını avtomatik idarə edir.
- Elementlərlə işləmək üçün rahat metodlar: Daxili metodlar asanlıqla elementləri əlavə etməyə, silməyə və dəyişməyə imkan verir.
Python-da dinamik massiv yaradılması və istifadəsi nümunəsi:
# Siyahının yaradılması
dynamic_array = [1, 2, 3, 4, 5]
# Elementin əlavə edilməsi
dynamic_array.append(6)
print(dynamic_array) # Çıxış: [1, 2, 3, 4, 5, 6]
# Elementin silinməsi
dynamic_array.remove(3)
print(dynamic_array) # Çıxış: [1, 2, 4, 5, 6]
# İndekslə giriş
print(dynamic_array[2]) # Çıxış: 4
# Elementin dəyişdirilməsi
dynamic_array[2] = 10
print(dynamic_array) # Çıxış: [1, 2, 10, 5, 6]
10.2 Dinamik massivlərin üstünlükləri və çatışmazlıqları
Dinamik massivlərin öz üstünlükləri və çatışmazlıqları var. Gəlin bunları ətraflı nəzərdən keçirək.
Üstünlüklər:
- Elastiklik: Dinamik massivlər proqramın tələblərinə uyğun olaraq ölçüsünü dəyişə bilər, bu da yaddaşı səmərəli idarə etməyə və dəyişkən həcmli məlumatları emal etməyə imkan verir.
- Indeks üzrə sürətli giriş: Statik massivlər kimi, dinamik massivlər indeks üzrə elementlərə sabit vaxtda
O(1)daxil olmağa imkan verir. - Rahatsızlıq: Python-da siyahılarla işləmək üçün daxili metodlar (məsələn, append, remove, insert) elementlərlə manipulyasiyanı asanlaşdırır və kodu daha oxunaqlı və dəstəklənən edir.
- Avtomatik yaddaş idarəetməsi: Python dinamik massivlər üçün yaddaşı avtomatik idarə edir ki, bu da proqramçıya yaddaşı əl ilə ayırmaq və azad etmək ehtiyacından azad edir.
Çatışmazlıqlar:
- Yaddaşın yenidən bölüşdürülməsi: Dinamik massivlərin ölçüsünü artırarkən yaddaşın yenidən bölüşdürülməsi tələb oluna bilər, bu da elementlərin yeni yaddaş sahəsinə köçürülməsi ilə müşayiət olunur. Bu, proqramın icrasını müvəqqəti olaraq ləngidə bilər.
- Elementlərin daxil edilmə və silinmə xərcləri: Massivin ortasına elementlərin daxil edilməsi və silinməsi elementlərin yerini dəyişməyi tələb edir və bu
O(n)vaxt aparır. - Yönetim üçün bir az daha yüksək xərclər: C kimi aşağı səviyyəli dillərlə müqayisədə Python-da dinamik massivlər avtomatik yaddaş idarəetməsi və istisnaların işlənməsi ilə bağlı əlavə xərclərə malikdir.
10.3 İstifadə nümunələri və tətbiqi
Python-da dinamik massivlərin istifadəsinə bir neçə nümunə nəzərdən keçirək.
1. Dinamik tapşırıqlar siyahısının həyata keçirilməsi:
tasks = []
# Tapşırıqların əlavə edilməsi
tasks.append("Tapşırıq 1")
tasks.append("Tapşırıq 2")
tasks.append("Tapşırıq 3")
# Tapşırığın yerinə yetirilməsi və siyahıdan silinməsi
completed_task = tasks.pop(0)
print(f"Tamamlandı: {completed_task}")
print(f"Qalan tapşırıqlar: {tasks}") # Çıxış: Qalan tapşırıqlar: ['Tapşırıq 2', 'Tapşırıq 3']
2. Dinamik obyektlərin siyahısının həyata keçirilməsi:
students = []
# Tələbələrin əlavə edilməsi
students.append("Alice")
students.append("Bob")
students.append("Charlie")
# Tələbənin silinməsi
students.remove("Bob")
print(f"Silinmədən sonra tələbələr: {students}") # Çıxış: Silinmədən sonra tələbələr: ['Alice', 'Charlie']
# Tələbənin müəyyən mövqeyə əlavə edilməsi
students.insert(1, "David")
print(f"Əlavədən sonra tələbələr: {students}") # Çıxış: Əlavədən sonra tələbələr: ['Alice', 'David', 'Charlie']
GO TO FULL VERSION