CodeGym /Kurslar /Python SELF AZ /Dinamik massivlər

Dinamik massivlər

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

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.

Python dinamik massivlərinin xüsusiyyətləri

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']
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION