Barcha dasturlash tillari kabi Python dasturlash tili ham rivojlanib, zamonga va talabga qarab ishlab chiqaruvchilar tomonidan o’zgarishlar kiritib borilmoqda


Matritsa elementlarini nollar bilan to’ldirish



Download 4,22 Mb.
bet45/52
Sana23.12.2022
Hajmi4,22 Mb.
#894684
1   ...   41   42   43   44   45   46   47   48   ...   52
Bog'liq
Python дастурлаш тили Lotin yangi

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)

Download 4,22 Mb.

Do'stlaringiz bilan baham:
1   ...   41   42   43   44   45   46   47   48   ...   52




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish