Matritsa elementlarini nollar bilan to’ldirish.
Python tilida matritsani boshlang’ich qiymatlar bilan, masalan A[3x2] jadvalni 0 soni bilan to’ldirish zarurati bo’lsa uni quyidagicha amalga oshirish mumkin bo’ladi:
Dastur kodini generator orqali quyidagicha yozish mumkin:
N = 3
M = 2
for i in range(N):
A = [ [0]*M for i in range(N) ]
print (A)
Natija: [[0, 0], [0, 0], [0, 0]]
Ushbu dasturni yana boshqa usulda ham yaratish mumkin:
N = 3
M = 2
A = [0] * N # N ta 0 lardan tashkil topgan ro’yxat
for i in range(N):
A[i] = [0] * M # Har bir satrida M ta 0 lardan tashkil topgan uch satrli A massivni yaratish
print (A)
Natija: [[0, 0], [0, 0], [0, 0]]
Massivni yaratishda avval uzunligi N ga teng bo’lgan satr yaratib, so’ngra massivni hosil qilish mumkin:
N = 3
M = 2
for i in range (N):
satrq[0]*M #Uzunligi M ga teng bo’lgan satr yaratish
A = [satr] * N #Elementlari 0 lardan tashkil topgan N ta satrli massiv yaratish
print (A)
Uchala dastur ham bir xil natijaga ega bo’ladi.
Natija:
[[0, 0], [0, 0], [0, 0]]
Massivlarni nollar bilan to’ldirishning sodda usuli ikkita ichma-ich joylashgan sikl ochib, matritsaning har bir elementiga 0 qiymatni berishdan iborat:
Agar qiymatlari berilgan matritsa elementlarini nollar bilan almashtirish zarurati bo’lsa, generator yordamidagi quyidagi dasturdan foydalanish mumkin.
A = [ [21, 1, 3], [3, 1, 5] ]
B = [[0 for j in range(len(A))] for i in range(len(A[0]))]
print (B)
Matritsa elementlarini klaviatura orqali kiritish va ekranga chiqarish deyish kerakdir
Matritsa elementlari avvaldan berilmagan bo’lsa yoki matritsa yaratilib, uni bir xil sonlar bilan to’ldirilgan bo’lsa, uni ixtiyoriy qiymatlar bilan to’ldirish mumkin. Matritsa elementlari ikkita indeksga ega bo’lganligi uchun, uning elementlarini kiritish uchun yuqoridagi misolimizdagidek, ichma-ich joylashgan sikllardan foydalanamiz.
Matritsani yaratilganidan so’ng uni ixtiyoriy qiymatlar bilan to’ldirish va oynaga chiqarish bir necha xil usulda amalga oshirilishi mumkin.
1 usul. Standart holda n × m o’lchovli matritsani yaratish, elementlarini kiritish va ekarnga chiqarish bo’yicha dastur fragmenti :
for i in range(N):
for j in range(M):
A[i][j] = ...
print (A)
Bu holda matritsa elementlarining ko’rinish holati noqulay bo’ladi.
2 usul. Ikki o’lchovli matritsa elementlarini kiritish va qayta ishlashda ikkita ichma-ich joylashgan sikldan foydalaniladi. Bunda birinchi sikl satr elementlari bo’yicha, ikkinchi sikl har bir satrdagi elementlari bo’yicha qaraladi. Matritsa har bir satrini probel bilan ajratib ekranga chiqarish uchun quyidagi dastur fragmentidan foydalaniladi:
for i in range(len(A)): # len(A) – satrlar soni
for j in range(len(A[i])): # len(A[i]) – i satrdagi elementlar soni
print(A[i][j], end = ' ') # Satr elementlari orasiga bo’sh joy qo’yish
print() # Satrlar orasiga bo’sh satr qo’yish
3 usul. Matritsani indekslari bo’yicha emas, ularni ro’yxat qiymatlari bo’yicha ham ekranga chiqarish mumkin. Buni quydagicha ham amalga oshirish mumkin:
for i in A: # A matritsaning barcha satrlarini ko’rib chiqish
for j in i: # i satrdagi barcha elementlarni ko’rib chiqish
print(j, end = ' ')
print()
4 usul. Matritsa elementlarini klaviatura orqali kiritishning yana bir qulay usuli bu ro’yxat (list) dagi append() yordamida amalga oshirishdir. n×m o’lchovli matritsa elementlarini kiritish uchun n va m o’zgaruvchilarga Bu holda elementlar soni va tipi noma’lum bo’lgan biror ro’yxat a = [] e’lon qilinadi. Matritsa elementlarini kiritish uchun albatta ichma-ich joylashgan sikldan foydalanamiz. Tashqi sikl tanasida a ro’yxatda joylashgan har bir elementni ro’yxat shaklida yaratish uchun oraliq a1 ro’yxatni e’lon qilamiz. Ichki sikl yordamida a1 ro’yxat elementlarini klaviatura orqali a1.append(int(input())) qo’shiladi. a1 da satrlar sifatida yaratilgan elementlarni a asosiy matritsaga qo’shamiz. Shu tariqa matritsaning birinchi satri yaratiladi. Jarayonni davom ettirib berilgan matritsa elementlarini klaviatura orqali a ro’yxatga kiritiladi.
n=int(input('Satrlar sonini kiriting - '))
m=int(input('Ustunlar sonini kiriting - '))
a = []
for i in range(n):
a1q[]
for j in range(m):
print('a[', i, ',', j, ']q', end = ' ')
a1.append(int(input()))
a.append(a1)
print (a)
Matritsa elementlarini klaviatura orqali kiritish ayrim xatoliklarga yo’l qo’yiladi. Asosiy xatolik bu matritsani yaxlit struktura sifatida tushunishdadir. Python tilida bunday ko’rinishdagi matritsalar ichma-ich yoki ketma-ket joylashgan ro’yxat sifatida qarash kerak bo’ladi. Masalan quyidagi dasturda xatolik bor:
a = []
for i in range(3):
for j in range(5):
a[i][j] = int(input())
print(a)
(a[i][j] = int(input()) IndexError: list index out of range) ko’rinishidagi ya’ni “ro’yxat indeksi diapazondan tashqarida” degan xatolikni chiqaradi. Chunki bu dastur fragmentida ichma-ich joylashgan ro’yxatga murojaat qilish uchun avvalo birinchi indeks (i) ga murojaat qilib, so’ngra sikl ichidagi ikkinchi (j) indeksga murojaat qilish kerak bo’ladi.
Bunday xatolikni oldini olish uchun yuqoridagi usuldan yoki quyidagi ko’rinishdagi dastur kodidan foydalanish mumkin bo’ladi.
1 usul. Matritsa elementlarini nollar bilan to’ldirish va klaviatura orqali mos elementlarini kiritish (Tekshirib ko’ring).
N = 3
M = 2
A = []
for i in range(N):
A.append([0]*M)
for i in range(N):
for j in range(M):
print('A[',i,',',j,']q', end q' ')
A[i][j] = int(input())
print(A)
2 usul. Ichma-ich joylashgan ro’yxatga murojjat qilish usulida klaviatura orqali matritsa elementlarini kiritish.
N = 3
M = 2
A = []
for i in range(N):
A.append([])
for j in range(M):
print('A[', i, ',', j, ']q', end = ' ')
A[i] = A[i] + [int(input())]
print(A)
Chiziqli algebra kursida matritsalar ustida bir qator amallar bajarish ko’rsatilgan. Matritsani matritsaga qo’shish uchun ularning o’lchovi teng bo’lishi, va mos elementlarini bir-biriga qo’shish kifoya. Matritsani songa ko’paytirish uchun matritsaning har bir elementi berilgan songa ko’paytiriladi.
Matritsani transponirlash uchun matritsaning satrlari ustun, ustunlari satr ko’rinishiga aylantiriladi.
Masala. Matritsani transponirlang.
Transponirlash masalasida quyidagi dastur kodidan foydalanish qulay:
A = [ [21, 1, 3], [3, 1, 5] ]
# B matritsani nol elementlar bilan to’ldirish
B = [[0 for j in range(len(A))] for i in range(len(A[0]))]
# A matritsani transponirlash
for j in range(len(A)):
for i in range(len(A[0])):
B[i][j] = A[j][i]
print(' A:', A)
print(' B:', B)
Natija:
[[0, 0], [0, 0], [0, 0]]
A: [[21, 1, 3], [3, 1, 5]]
B: [[21, 3], [1, 1], [3, 5]]
Matritsani transponirlashning boshqa usullari ham mavjud. Masalan, elementlari satr ko’rinishidagi 3×4 o’lchovli matritsa berilgan. Matritsani transponirlang.
matritsa = [['Olma', 'Anor', 'Shaftoli', 'Behi'],
['Qovun', 'Osqovoq', 'Handalak', 'Tarvuz'],
['sabzi', 'piyoz', 'Pomidor', 'Bodring']]
yangi_matritsa = []
for j in range(len(matritsa[0])):
yangi_matritsa_satr = []
for i in range(len(matritsa)):
yangi_matritsa_satr.append(matritsa[i][j])
yangi_matritsa.append(yangi_matritsa_satr)
print (yangi_matritsa)
Do'stlaringiz bilan baham: |