Лекция · 4.6
Екі өлшемді массивте амалдар
Өткен сабақта матрица құруды және аралауды үйрендік. Енді сол матрицамен НАҚТЫ не істеуге болатынын қарастырамыз: жолдарды сұрыптау, керексіз қатарды өшіру, жаңа қатар қосу, әр бағанның қосындысын немесе әр жолдың көбейтіндісін табу. Бұлардың бәрі — Excel-дегі кесте амалдарының Python-дағы баламасы.
Негізгі параметрлер
Анықтама
len(a) — жол саны; len(a[i]) — i-ші жолдағы баған саны; a[i] — i-ші жолдың толық тізімі.
len(a) — жол саны; len(a[i]) — i-ші жолдағы баған саны; a[i] — i-ші жолдың толық тізімі.
a = [[4, 9, 1], [6, 7, 1], [9, 1, 3]] print(len(a)) # 3 print(len(a[1])) # 3 print(a[2]) # [9, 1, 3]
Ескерту: Python тізімдер тізімінде жолдар әртүрлі ұзындықта болуы мүмкін («тісшекті» тізім) — сондықтан
len(a[i]) әр i үшін бөлек тексерілуі керек, оны len(a[0])-мен алмастыруға болмайды.Қатар бойынша сұрыптау
Екі өлшемді массивті сұрыптау дегеніміз — оны қатар немесе баған бойынша реттеу. Бір өлшемді массивке арналған sorted() функциясы әр жолға жеке қолданылады:
a = [[29, 8, 7, 23, 15], [3, 25, 24, 2], [23, 22, 30, 15]] for i in range(len(a)): a[i] = sorted(a[i]) print(a) # [[7, 8, 15, 23, 29], [2, 3, 24, 25], [15, 22, 23, 30]]
Нәтижесінде матрицаның ӘР қатары өз алдына өсу ретімен реттеледі — қатарлардың бір-біріне қатысты орны өзгермейді.
Қатарды өшіру және кірістіру
Анықтама
Қатарды өшіру:
Қатарды өшіру:
a.remove(a[k]) немесе del a[k]. Қатарды кірістіру: a.insert(k, [жаңа қатар]).
a = [[25, 62, 48], [35, 35, 21], [41, 26, 34]] k = 1 del a[k] print(a) # [[25, 62, 48], [41, 26, 34]] — 2-жол (индекс 1) өшті a.insert(1, [0, 5, 11]) print(a) # [[25, 62, 48], [0, 5, 11], [41, 26, 34]]
Баған қосындысы, жол көбейтіндісі
Жол бойынша есептеу мен баған бойынша есептеудің циклдер реті ерекшеленеді:
row, column = 2, 3 my_list = [[40, 2, 31], [6, 41, 49]] sum_column = [0 for col in range(column)] product_row = [1 for r in range(row)] # Баған қосындысы: сыртқы цикл — баған, ішкі — жол for i in range(column): for j in range(row): sum_column[i] += my_list[j][i] # Жол көбейтіндісі: сыртқы цикл — жол, ішкі — баған for i in range(row): for j in range(column): product_row[i] *= my_list[i][j] print(sum_column) # [46, 43, 80] print(product_row) # [2480, 12054]
🎯 ҰБТ байланысы
Матрицамен амалдар — Python блогының жоғары деңгейлі есептері.
1
sorted(a[i]) әр жолды жеке сұрыптайды, бүкіл матрицаны бірге емес.
2
del a[k] мен a.remove(a[k]) — екеуі де қатарды индексі бойынша өшіреді.
3
Баған қосындысында цикл реті ауысады — жиі жіберілетін қате.
4
a[i][j]=i*j секілді формулада индекстер 0-ден басталатынын ұмытпау.
Сабақ қорытындысы
- len(a) — жол саны, len(a[i]) — i-ші жолдағы баған саны.
- Қатар бойынша сұрыптау:
a[i] = sorted(a[i])әр жолға жеке. - Қатарды өшіру/кірістіру:
del a[k],a.insert(k, [...]). - Баған қосындысы мен жол көбейтіндісі — циклдердің ретін ауыстыру арқылы есептеледі.