CodeGym /Kurslar /Python SELF AZ /Sabit ölçülü massivlər

Sabit ölçülü massivlər

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

9.1 Fiksasiya olunmuş ölçülü massivlərin xüsusiyyətləri

Fiksasiya olunmuş ölçülü massivlər — ölçüsü yaradılarkən təyin olunan və proqramın icrası zamanı dəyişə bilməyən massivlərdir. Python-da fiksasiya olunmuş ölçülü massivlər array kitabxanası vasitəsilə yaradıla bilər və ya siyahılardan istifadə edilə bilər, hərçənd Python siyahıları ölçüsünü dəyişə bilər, onlar digər dillərdəki massivlərə bənzər şəkildə istifadə olunur.

Fiksasiya olunmuş ölçülü massivlərin xüsusiyyətləri:

  • Sabit ölçü: Massivin ölçüsü onun yaradılarkən təyin edilir və dəyişdirilə bilməz.
  • Eynicinslilik: Massivin bütün elementləri eyni tipdən olmalıdır.
  • İndeks üzrə sürətli giriş: Massivin elementlərinə giriş sabit vaxtda O(1) həyata keçirilir.
  • Ölçünün dəyişməməsi: Massivin elementlərinin sayı dəyişməz qalır və yeni elementlərin əlavə edilməsi mümkün deyil.

Python-da fiksasiya olunmuş ölçülü massiv yaratma nümunəsi:

array kitabxanasından istifadə:


import array

# Tam ədədlərdən ibarət massiv yaratmaq (int üçün 'i' tipi)
arr = array.array('i', [1, 2, 3, 4, 5])

# Elementlərə giriş
print(arr[2])  # Çap: 3

# Elementin dəyərini dəyişmək
arr[2] = 10
print(arr)  # Çap: array('i', [1, 2, 10, 4, 5])

Siyahıdan istifadə edərək (fiksasiya olunmuş ölçülü massivi təqlid etmək):


# Fiksasiya olunmuş ölçülü siyahı yaratmaq
arr = [0] * 5

# Elementlərin inicializasiyası
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5

# Elementlərə giriş
print(arr[2])  # Çap: 3

# Elementin dəyərini dəyişmək
arr[2] = 10
print(arr)  # Çap: [1, 2, 10, 4, 5]

9.2 Sabit ölçülü massivlərin üstünlükləri və çatışmazlıqları

Hər şeyin öz güclü və zəif tərəfləri var, sabit massivlərdə də eyni vəziyyət.

Üstünlüklər:

  • İndekslə sürətli giriş: Massivin hər hansı bir elementinə giriş üçün sabit vaxt O(1) tələb olunur, bu da massivləri məlumat oxumaq üçün çox səmərəli edir.
  • Sadə tətbiqetmə: Massivlər başa düşülməsi və istifadəsi asandır, onları müxtəlif tapşırıqlarda həyata keçirmək və tətbiq etmək asandır.
  • Yaddaşın səmərəli istifadəsi: Massivin ölçüsü sabit olduğundan, yaddaş massiv yaradılarkən dərhal ayrılır ki, bu da yaddaşın yenidən bölüşdürülməsi xərclərindən qaçınmağa imkan verir.
  • Proqnozlaşdırıla bilərik: Sabit ölçülü massiv yaddaşın idarə edilməsini və resursların istifadəsinin proqnozlaşdırılmasını asanlaşdırır.

Çatışmazlıqlar:

  • Ölçünün dəyişməməsi: Massivin ölçüsü onun yaradılması zamanı müəyyən edilir və dəyişə bilməz. Bu o deməkdir ki, massiv üçün əvvəlcədən lazım olan ölçünü bilmək lazımdır, ya da artıq yaddaş ayırma riski var.
  • Əlavə etmək və silmək xərcləri: Elementlərin əlavə edilməsi və silinməsi vaxt tələb edə bilər, çünki elementlərin yerdəyişməsi tələb olunur. Ən pis halda, massivdəki elementin ortasında bir element daxil etmək və ya silmək O(n) vaxt aparır.
  • Yaddaşın qeyri-səmərəli istifadəsi: Əgər massiv tam istifadə edilmir, qalan yaddaş hüceyrələri boş qalırsa, bu yaddaşın qeyri-səmərəli istifadəsinə səbəb ola bilər.
  • Məhdud elastiklik: Massivlər ölçünü dinamik olaraq dəyişdirməyə imkan vermir, bu da onları listlər kimi dinamik məlumat strukturlarına nisbətən daha az çevik edir.

9.3 İstifadə və tətbiq nümunələri

Budur sabit ölçülü massivlərin istifadəsinə və tətbiqinə dair bir neçə nümunə.

Nümunə 1: Cədvəllər və matrislər

Sabit ölçülü massivlər tez-tez cədvəlləri və matrisləri təqdim etmək üçün istifadə olunur, harada ki ölçü əvvəlcədən bilinir.


import numpy as np

# Sabit ölçülü 3x3 matrisin yaradılması
matrix = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])

# Matrisin elementlərinə daxil olmaq
print(matrix[1][2])  # Çıxış: 6

# Matrisin elementini dəyişmək
matrix[1][2] = 10
print(matrix)
# Çıxış:
# [[ 1  2  3]
#  [ 4  5 10]
#  [ 7  8  9]]

Nümunə 2: Buffers və keşlər

Sabit ölçülü massivlər buffferlər və keşlər yaratmaq üçün istifadə olunur, harada ki buffer ölçüsü əvvəlcədən bilinir və dəyişmir.


# Məlumatları oxumaq üçün sabit ölçülü buffer
buffer_size = 1024
buffer = bytearray(buffer_size)

# Bufferi məlumatla doldurmaq
data = b"Hello, World!"
buffer[:len(data)] = data

print(buffer[:len(data)])  # Çıxış: b'Hello, World!'

Nümunə 3: Zaman və tarix məlumatlarının saxlanması

Sabit ölçülü massivlər zaman və tarix məlumatlarını, məsələn, hər ayda günlərin sayı kimi məlumatları saxlamaq üçün istifadə edilə bilər.

Bu nümunədə biz sabit ölçülü massiv davranışını list sinfi vasitəsilə təqlid edirik:


# Hər ayda günlərin sayı (uzun il deyil)
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

# Məlumatlara daxil olmaq
month = 2  # Fevral
print(f"Fevralda {days_in_month[month - 1]} gün var.")  # Çıxış: Fevralda 28 gün var.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION