Massivlər

Bildiyiniz kimi, massiv bir adla adlandırılmış nizamlanmış kəmiyyətlər yığımıdır. Bir çox proqramlaşdırma dillərində massivlərlə işləmək üçün ayrıca array tipi nəzərdə tutulmuşdur. Python dilində standart tip kimi array tipi olmasa da, massivlərlə işləmək üçün bu dilin imkanları kifayət qədərdir. Konkret olaraq, siyahılar (lists), array modulu və NumPy massivlərindən istifadə etmək mümkündür. Biz bunlardan ikisi ilə yaxından tanış olacağıq.

Siyahıların massiv kimi istifadəsi

Massiv strukturlu verilənlərlə işləməyin ən sadə yolu siyahılardan (list tipi) istifadə etməkdir. Gəlin sadə misallar üzərində bunu nümayiş etdirək. Fərz edək ki, Əli üç fəndən qiymətlər alıb. Bu qiymətləri birölçülü massiv şəklində təsvir etmək olar. Aşağıdakı proqramı nəzərdən keçirin:

>>> marks = [3, 5, 4]
>>> for m in marks:
        print(m, end = ' ')

3 5 4 
>>>

Biz burada Əlinin qiymətlərini əvvəlcədən təyin etmiş oluruq. Amma bu qiymətlər, yəni massivin elementləri klaviaturadan da daxil edilə bilər:

marks = []

n = int(input("Qiymətlərin sayını daxil edin: ")) 
for i in range(n):
    marks.append(int(input("Qiymət: ")))

print("Şagirdlərin qiymətləri:")
for m in marks:
    print(m, end=' ')

Burada əvvəlcə boş massiv (siyahı) elan edilir və istifadəçidən qiymətlərin (massivin elementlərinin) sayı soruşulur. Sonra dövr qurularaq massivə klaviaturadan daxil edilən qiymətlər əlavə olunur. Ən sonda bu qiymətlər ekranda çapa verilir. Proqramı skriptdə yazıb icra edin.

İndi isə gəlin siyahılardan istifadə edərək ikiölçülü massivləri nəzərdən keçirək. Bu dəfə fərz edək ki, Əli, Vəli və Pirvəli üç fəndən qiymətlər alıb. Onların qiymətlərini ikiölçülü massiv şəklində təsvir etmək olar. Aşağıdakı proqramı nəzərdən keçirin:

>>> marks = [[3, 5, 4], [4, 3, 5], [5, 4, 3]] 
>>> for m in marks:
        for n in m: 
            print(n, end = ' ')
        print()

3 5 4 
4 3 5 
5 4 3 
>>>

Proqrama diqqətlə baxsanız, görəcəksiniz ki, biz burada elementləri siyahıdan ibarət siyahı təyin etmişik. Xatırlayırsınızsa, siyahılar mövzsunu işləyəndə qeyd etmişdik ki, iç-içə siyahılardan istifadə etmək mümkündür, yəni siyahının özü başqa siyahılardan ibarət ola bilər.
Eyni proqramı başqa cür də yazmaq olardı:

>>> marks = [[3, 5, 4], [4, 3, 5], [5, 4, 3]] 
>>> for i in range(len(marks)):
        for j in range(len(marks[i])): 
            print(marks[i][j], end = ' ')
        print()

3 5 4 
4 3 5 
5 4 3
>>>

Qiymətləri, yəni massivin elementlərini klaviaturadan da daxil edə bilərik:

marks = []
n = int(input("Şagirdlərin sayını daxil edin: ")) 
m = int(input("Qiymətlərin sayını daxil edin: "))

for i in range(n): 
    marks.append([])

for i in range(n): 
    r = marks[i]
    print("{}. şagirdin qiymətləri:".format(i + 1)) 
    for j in range(m):
        r.append(int(input("Qiymət: ")))

print("Şagirdlərin qiymətləri:") 
for i in range(n):
    for j in range(m): 
        print(marks[i][j], end = ' ')
    print()

Burada əvvəlcə boş massiv (siyahı) elan edilir. Bundan sonra istifadəçidən şagirdlərin (n) və qiymətlərin (m) sayı soruşulur. Daha sonra dövr qurularaq boş siyahıya şagirdlərin (n) sayı qədər elementlər (boş siyahılar) əlavə edilir (Biz burada siyahıya elementləri əlavə etmək üçün append() metodundan yararlanırıq). Həmin bu boş siyahılar da şagirdlərin müvafiq qiymətləri (klaviaturadan daxil edilənlər) ilə doldurulur. Nəhayət, bu qiymətlər ekranda çapa verilir. Bu proqramı da skriptdə yazıb icra edin.
İndi isə gəlin məsələni bir az mürəkkəbləşdirək, Əli, Vəli və Pirvəlinin orta qiymətlərini tapaq:

marks = []
n = int(input("Şagirdlərin sayını daxil edin: ")) 
m = int(input("Qiymətlərin sayını daxil edin: "))

for i in range(n): 
    marks.append([])

for i in range(n): 
    r = marks[i]
    print("{}. şagirdin qiymətləri:".format(i + 1)) 
    for j in range(m):
        r.append(int(input("Qiymət: ")))

print("Şagirdlərin orta qiymətləri:") 
for i in range(n):
    s = 0
    for j in range(m):
        s += marks[i][j]
    print("{0:d} - {1:3.1f}".format(i + 1, s / m))

Proqramı skriptdə yazıb icra edin.

array modulunun istifadəsi

Python proqramlaşdırma dilindəki array modulu massiv tipli verilənlərlə işləmək üçün nəzərdə tutulub. Buradakı massivlər yuxarıda bəhs etdiyimiz siyahılara çox bənzəyir. Lakin siyahılardan fərqli olaraq, array massivlərinin elementləri eynitiplidir və onların yaddaş ölçülərinə məhdudiyyətlər qoyulur.
Proqramda array massivlərindən istifadə edə bilmək üçün array modulunun özü daxil edilməlidir:

>>> from array import * 
>>>

Massivi təyin etmək üçün isə aşağıdakı konstruktordan istifadə edilir:

identifikator = array(tipkod[,inisiallaşdırıcı])

Burada identifikator massivin dəyişən adı, tipkod (tip kodu) elementlərinin tipini bildirən kod, inisiallaşdırıcı isə elementlərin siyahısıdır.
Massivin elementləri üçün təyin edilən tip kodları aşağıdakı cədvəldə verilmişdir:

TipkodTipMinimum ölçü (bayt)
bint 1
Bint 1
uUnicode character 2
hint 2
Hint 2
iint 2
Iint 2
lint 4
Lint 4
qint 8
Qint 8
ffloat4
dfloat8

Aşağıdakı nümunəni nəzərdən keçirin:

>>> from array import *
>>> mas = array('b', [1, 2, 3, 4, 5]) 
>>> for m in mas:
        print(m, end = ' ')

1 2 3 4 5
>>>

Elementləri klaviaturadan da daxil edə bilərsiniz. Bunun üçün massivin sonuna yeni element əlavə edən array.append(element) metodundan istifadə etməlisiniz:

from array import *

mas = array('b', [])
n = int(input("Qiymətlərin sayını daxil edin: "))

for i in range(n): 
    mas.append(int(input("Element: ")))

print("Massivin elementləri:") 
for m in mas:
    print(m, end = ' ')

Massivə yeni elementi müəyyən mövqedən daxil etmək üçün array.insert(mövqe, element) metodundan istifadə olunur:

>>> from array import *
>>> mas = array('b', [2, 3, 4, 5]) 
>>> mas.insert(0, 1)
>>> for m in mas:
        print(m, end = ' ')

1 2 3 4 5 
>>>

Massivin sonuna başqa iterasiyanın (məsələn: massivin) elementlərini artırmaq üçün array.extend(iterasiya) metodu tətbiq edilir. Burada diqqət etmək lazımdır ki, istifadə olunan iterasiyanın elementləri cari massivin elementləri ilə eyni tipdə olsun. Əks halda, TypeError xətası qeydə alınacaq. Aşağıdakı nümunəni nəzərdən keçirin:

>>> from array import *
>>> mas1 = array('b', [1, 2, 3, 4, 5]) 
>>> mas2 = array('b', [6, 7, 8]) 
>>> mas1.extend(mas2)
>>> for m in mas1:
        print(m, end = ' ')

1 2 3 4 5 6 7 8 
>>>

Massivin sonuna verilmiş siyahıdan elementləri əlavə etmək üçün array.fromlist(siyahı) metodundan istifadə olunur:

>>> from array import *
>>> mas = array('b', [1, 2, 3, 4, 5]) 
>>> a = [6, 7, 8]
>>> mas.fromlist(a)
>>> for m in mas:
        print(m, end = ' ')

1 2 3 4 5 6 7 8 
>>>

Massivdən onun elementini çıxarmaq üçün array.remove(element) və ya array.pop([mövqe]) metodlarından istifadə edilir. Birinci metod göstərilmiş elementi massivdə ilk tapdığı yerdən silir. İkinci metodda isə xaric edilməsi istənilən elementin mövqeyi göstərilir. Bu mövqe göstərilmədikdə massivin sonuncu elementi xaric edilir. Aşağıdakı nümunələri nəzərdən keçirin:

>>> from array import *
>>> mas = array('b', [1, 2, 3, 4, 5]) 
>>> mas.remove(3)
>>> mas
array('b', [1, 2, 4, 5])
>>> mas.pop(2)
4
>>> mas
array('b', [1, 2, 5])
>>> mas.pop()
5
>>> mas
array('b', [1, 2])
>>>

Massivdə verilmiş elementin neçənci mövqedə yerləşdiyini öyrənmək üçün array.index(element) metodundan istifadə edilir. Göstərilmiş elementdən massivdə bir neçəsi ola bilər, metod onlardan birincisinin mövqeyini qaytaracaq:

>>> from array import *
>>> mas = array('b', [1, 2, 3, 4, 5]) 
>>> mas.index(3)
2
>>>

Massivin elementlərini tərs düzmək üçün array.reverse() metodundan istifadə olunur:

>>> from array import *
>>> mas = array('b', [1, 2 , 3, 4, 5]) 
>>> mas.reverse()
>>> mas
array('b', [5, 4, 3, 2, 1])
>>>

Biz buraya qədər array modulunun bir neçə əsas metodlarını nəzərdən keçirdik. Digər metodlarla özünüz də tanış ola bilərsiniz. Sonda onu da qeyd edək ki, array modulu çoxölçülü massivlərlə işləməyə imkan vermir. Əslində daha öncə istifadə etdiyimiz siyahılarla da bu birbaşa mümkün deyildi. Biz dolayı yoldan, yəni iç-içə siyahılardan istifadə etməklə ikiölçülü massivləri emulyasiya etmiş olduq. Əgər çoxölçülü massivlərlə daha geniş imkanlarla işləmək istəyirsinizsə, NumPy massivlərindən istifadə etməlisiniz. NumPy Python dilində elmi hesablamalar və digər tətbiqi məsələlərin həlli üçün nəzərdə tutulan əlavə paketdir. Geniş məlumat əldə etmək üçün http://www.numpy.org saytına müraciət edin.

Massivlər” üçün bir şərh

Şərh üçün bağlıdır.