Презентація "Двовимірні масиви в мове Python"

Про матеріал
Часто в задачах доводиться зберігати прямокутні таблиці з даними. Такі таблиці називаються матрицями або двовимірними масивами. Однак в Python 3 таких масивів, по суті, не існує. Але це не проблема, так як базові можливості платформи дозволяють легко створювати двовимірні списки. У мові програмування Python таблицю можна представити у вигляді списку рядків, кожен елемент якого є в свою чергу списком, наприклад, чисел.
Перегляд файлу
Мова програмування PYTHON   Двовимірні масиви. Навчання заради успіху. Вчитель інформатики В. Д. Партіка
Обробка і виведення вкладених списків. Часто в задачах доводиться зберігати прямокутні таблиці з даними. Такі таблиці називаються матрицями або двовимірними масивами.a = [[1, 2, 3], [4, 5, 6]]print(a[0])print(a[1])b = a[0]print(b)print(a[0][2])a[0][1] = 7print(a)print(b)b[2] = 9print(a[0])print(b)[1, 2, 3][4, 5, 6][1, 2, 3]3[[1, 7, 3], [4, 5, 6]][1, 7, 3][1, 7, 9][1, 7, 9]Тут перший рядок списку a [0] є списком з чисел [1, 2, 3]. Тобто a[0][0] == 1, a[0][1] == 2, a[0][2] == 3, a[1][0] == 4, a[1][1] == 5, a[1][2] == 6.
Обробка і виведення вкладених списків. Для обробки і виведення списку, як правило, використовують два вкладених циклу. Перший цикл перебирає номер рядка, другий цикл біжить за елементами всередині рядка. Наприклад, вивести двовимірний числовий список на екран через підрядник, розділяючи числа пробілами всередині одного рядка, можна так:a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]for i in range(len(a)): for j in range(len(a[i])): print(a[i][j], end=‘ ‘) print()1 2 3 45 6 7 8 9
Введення двовимірного масиву. Нехай програма отримує на вхід двовимірний масив, у вигляді n рядків, кожен з яких містить m чисел, розділених пробілами.n = int(input()) a = []for i in range(n): a.append([int(j) for j in input().split()])print(a)Або, без використання складних вкладених викликів функцій:n = int(input()) a = []for i in range(n): row = input().split() for i in range(len(row)): row[i] = int(row[i]) a.append(row)print(a)
Ви можете зробити те ж саме з генераторами:n = int(input())a = [[int(j) for j in input().split()] for i in range(n)]print(a)
Обробка і виведення вкладених списків. Змінна циклу for в Python може перебирати не тільки діапазон, який створюється за допомогою функції range(), але і взагалі перебирати будь-які елементи будь-якій послідовності.a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]for row in a: for elem in row: print(elem, end=‘ ‘) print()1 2 3 4 5 67 8 9 Природно, для виведення одного рядка можна скористатися методом join ():for row in a: print(' '.join([str(elem) for elem in row]))
Обробка і виведення вкладених списків. Використовуємо два вкладених циклу для підрахунку суми всіх чисел в списку:a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]s = 0for i in range(len(a)): for j in range(len(a[i])): s += a[i][j]print(s)45 Або те ж саме з циклом не по індексу, а за значеннями рядків:a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]s = 0for row in a: for elem in row: s += elem # s = s + elemprint(s)
Створення вкладених списків. Нехай дано два числа: кількість рядків n і кількість стовпців m. Необхідно створити список розміром n × m, заповнений нулями. Перший спосіб: спочатку створимо список з n елементів (для початку просто з n нулів). Потім зробимо кожен елемент списку посиланням на інший одновимірний список з m елементів:n = 3m = 4a = [0] * nfor i in range(n): a[i] = [0] * mprint(a)[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]Інший (але схожий) спосіб: створити порожній список, потім n раз додати в нього новий елемент, який є списком-рядком:n = 3m = 4a = []for i in range(n): a.append([0] * m)print(a)
Приклад 1: Створити матрицю A, що складається з N рядків і M стовпців і заповнити її випадковими числами з відрізка [20;80]. Нехай i і j - цілочисельні змінні, що позначають індекси рядка і стовпця.from random import randint. N=3 M=3 A = [ [0]*M for i in range(N) ]for i in range(N): for j in range(M): A[i][j] = randint( 20, 80 )print(A)[[77, 35, 55], [43, 46, 27], [43, 58, 63]] Оскільки людина сприймає матрицю як таблицю, краще і на екран виводити її у вигляді таблиці, для цього можна написати таку процедуру.def print. Matrix( A ): for i in range(len(A)): for j in range(len(A[i])): print(
Можна написати таку функцію і в стилі Python : def print. Matrix ( A ): for row in A: for x in row: print(
Перебір елементів матриціКожен елемент матриці має два індекси, тому для перебору всіх елементів потрібно використовувати вкладений цикл. Зазвичай зовнішній цикл перебирає індекси рядків, а внутрішній - індекси стовпців. Ось так можна знайти суму всіх елементів матриці:summa = 0for i in range(N): for j in range(M): summa += A[i][j]print(summa)
Приклад: Дано цілочисельну матрицю випадкових цілих чисел розміром m*n (m і n задаються користувачем). Знайти мінімальний елемент матриці та його індекси. import randomn=int(input('Введіть кількість рядків матриці: '))m=int(input('Введіть кількість стовпців матриці: '))a=[]for i in range(n): b=[] for j in range(m): x=random.randint(10,99) b.append(x) a.append(b)print('Згенерована матриця:',a)for row in a: for elem in row: print(elem, end=' ') print()Введіть кількість рядків матриці: 4 Введіть кількість стовпців матриці: 4 Згенерована матриця:95 27 16 80 52 10 68 12 53 73 12 92 98 97 81 73
Знайти мінімальний елемент матриці та його індекси. Спосіб 1. Розв’язування методом перебору . . . . .min_el=a[0][0]min_i=0min_j=0for i in range(n): for j in range(m): if a[i][j]<min_el: min_el=a[i][j] min_i=i min_j=jprint('Мінімальний елемент: ',min_el)print('Індекс мінімального елемента [{}, {}]'.format(min_i,min_j)) Введіть кількість рядків матриці: 4 Введіть кількість стовпців матриці: 4 Згенерована матриця:47 50 90 69 76 24 31 74 33 82 73 41 13 49 45 62 Мінімальний елемент: 13Індекс мінімального елемента[3, 0]
Спосіб 2. Розв’язування з використаням методів списків.min_col=list(map(min, a))min_el=min(min_col)min_i=min_col.index(min(min_col))min_j=a[min_i].index(min_el)print('Мінімальний елемент: ',min_el)print('Індекс мінімального елемента[{}, {}]'.format(min_i,min_j)) Введіть кількість рядків матриці: 4 Введіть кількість стовпців матриці: 4 Згенерована матриця:35 28 93 15 95 59 78 60 59 10 72 68 63 54 11 35 Мінімальний елемент: 10Індекс мінімального елемента[2,1]
Спосіб 3. Пошук індексів для всіх мінімумів Якщо ж матриця буде містити декілька рівних елементів, які і будуть мінімальними, то запропоновані способи не підходять . . . . . min_col=list(map(min, a))min_el=min(min_col)print('Мінімальний елемент:',min_el)for i in range(n): for j in range(m): if a[i][j]==min_el: print('Індекс мінімального елемента[{}, {}]'.format(i,j)) Введіть кількість рядків матриці: 4 Введіть кількість стовпців матриці: 4 Згенерована матриця:81 79 14 91 54 67 17 72 62 81 66 61 42 77 59 79 Мінімальний елемент: 14Індекс мінімального елемента[0, 2]
Створити матрицю A, що складається з N рядків і M стовпців і заповнити його випадковими числами, знайти в ньому максимальний елемент і його індекси. Приклад 2:from random import randint. N=int(input(
for i in range(N): for j in range(M): A[i][j] = randint(0, 20)print. A(A)m=A[0][0]im=0jm=0for i in range(N): for j in range(M): if A[i][j]>m: m=A[i][j] im=i jm=jprint(
Завдання для вирішення: Напишіть програму, яка повинна знайти максимальний і мінімальний елементи матриці розмірності N і M і поміняти їх місцями. 2. Напишіть програму, яка виводить на екран рядок матриці, сума елементів якої найбільша.3. Напишіть програму, яка виводить на екран стовпець матриці, сума елементів якого найменша.
Дана матриця дійсних чисел розміру m x n. Рядок, що містить максимальний елемент масиву, поміняти з рядком, що містить мінімальний елемент. Дана дійсна матриця розміру m x n. Знайти суму найбільших значень елементів її рядків.6. Подсчитать количество отрицательных элементов в каждой строке матрицы размером m х n, элементы которой задаются с помощью датчика случайных чисел. Завдання для вирішення:
Квадратні матриціКвадратна матриця - це двовимірний масив, у якого кількість рядків і кількість стовпціводнакові. Для квадратної матриці використовують поняття «головна діагональ» (сірі клітини на мал. 3, а) і «побічна діагональ» (мал. 3, б)Головна діагональ - це елементи A [0] [0], A [1] [1], ..., A [N-1] [N-1], тобто елементи, у яких номер рядка дорівнює номеру стовпчика. Для перебору цих елементів досить одного циклу:for i in range (N): # Працюємо з A [i][i]мал. 3
Побудувати квадратну матрицю розмірності N = 4, у якій елементи на головній діагоналі дорівнюватимуть одиниці, а інші елементи рівні нулю. Приклад 3. N=3def print. A( A ): for i in range(N): for j in range(N): print(
За допомогою генератора легко виділити елементи головної діагоналі в окремий масив: D = [A[i][i] for i in range (N)]A = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]D = [ A[i][i] for i in range(3)]print(D)Вивід:[1, 1, 1] Приклад 4. Елементи побічної діагоналі - це A[0][N-1], A[1][N-2],...,A[N-1][0]. Зауважимо, що сума номерів рядка і стовпця для кожного елемента дорівнює N - 1, тому отримуємо такий цикл перебору:for i in range (N): # Працюємо з A [i] [N-1-i]
Заповнити двовимірний масив випадковими числами і знайти суму елементів, що лежать на побічної діагоналі. Приклад 5.from random import randint. N=int(input(
Для обробки всіх елементів на головній діагоналі і під нею (Мал. 4) потрібен вкладений цикл: номер рядка буде змінюватися від 0 до N - 1, а номер стовпця для кожного рядка i - від 0 до i:for i in range(N): for j in range(i+1): # работаем с A[i][j] Мал. 4, Виділена головна діагональ і всі елементи під нею.
Заповнити двовимірний масив випадковими числами і знайти максимальний елемент серед всіх елементів, що лежать на головній діагоналі і під нею. Приклад 6.from random import randint. N=int(input(max: max=A[i][j]print('max=',max) Вивід програми: Введите N: 4 " title="Заповнити двовимірний масив випадковими числами і знайти максимальний елемент серед всіх елементів, що лежать на головній діагоналі і під нею. Приклад 6.from random import randint. N=int(input("Введіть N: "))def print. A( A ): for row in A: for x in row: print( "{:4}".format(x), end=" " ) print()A = [ [0]*N for i in range(N) ]for i in range(N): for j in range(N): A[i][j] = randint(0, 20)print. A( A )max=A[0][0]for i in range(N): for j in range(i+1): if A[i][j]>max: max=A[i][j]print('max=',max) Вивід програми: Введите N: 4 ">
Щоб переставити стовпчики матриці, досить одного циклу. Наприклад, переставимо стовпці з індексами 2 і 4, використовуючи множинне присвоювання в Python: for i in range(N): A[i][2], A[i][4] = A[i][4], A[i][2]Переставити два рядки можна взагалі без циклу, враховуючи, що A [i] - це посилання на список елементів рядка i. Тому досить просто переставити посилання. Оператор: A[0], A[3] = A[3], A[0]переставляє рядки матриці з індексами 0 і 3.
Для того щоб створити копію рядка з індексом i, не можна робити так: R = A [i] # це невірно!тому що при цьому ми отримаємо нову посилання на існуючий рядок. Замість цього потрібно створити копію в пам'яті за допомогою зрізу, що включає всі елементи рядка: R = A [i] [:]Побудувати копію стовпчика з індексом j трохи складніше, так як матриця розташована в пам'яті порядках. У цьому завданні зручно використовувати генератор: C = [row [j] for row in A]У циклі перебираються всі рядки матриці A, вони по черзі потрапляють в змінну-масив row. Генератор вибирає з кожного рядка елемент з індексом j і складає список з цих значень.
Завдання для розв'язання:1. Напишіть програму, яка знаходить максимальний елемент на головній діагоналі квадратної матриці.2. Напишіть програму, яка заповнює матрицю з N рядків і N стовпців нулями і одиницями так, що всі елементи вище побічної діагоналі рівні нулю, а інші - одиниці.3. Дана целочисленная квадратна матриця порядку n. Знайти номери рядків, все елементи якихнулі.4. Дана целочисленная квадратна матриця порядку N. Знайти найбільше із значень елементів,розташованих в заштрихованої частини матриці.5. Дана целочисленная квадратна матриця порядку N. Знайти найбільше із значень елементів, розташованих в заштрихованої частини матриці.6. Дана целочисленная квадратна матриця порядку N. Знайти добуток значень елементів, розташованих в заштрихованої частини матриці.7. Побудувати квадратну матрицю порядку n:8. Побудувати квадратну матрицю порядку n:
Домашнє завдання1. В числовий матриці поміняти місцями два стовпці, т. е. все елементи одного стовпчика поставити на відповідні їм позиції іншого, а елементи другого перемістити в перший.from random import random. M = 10 N = 5a = []for i in range(N):    b = []    for j in range(M):        b.append(round(random()*2))    a.append(b)    print(b)c1 = int(input(
Домашнє завдання2. Задана матрица неотрицательных чисел. Посчитать сумму элементов в каждом столбце. Определить, какой столбец содержит максимальную сумму.from random import random. M = 10 N = 5a = []for i in range(N):    b = []    for j in range(M):        b.append(int(random()*11))        print( max_sum:        max_sum = s        col = iprint()print(col+1)" title="Домашнє завдання2. Задана матрица неотрицательных чисел. Посчитать сумму элементов в каждом столбце. Определить, какой столбец содержит максимальную сумму.from random import random. M = 10 N = 5a = []for i in range(N):    b = []    for j in range(M):        b.append(int(random()*11))        print("%3d" % b[j], end='')    a.append(b)    print() for i in range(M):    print(" --", end='')print()max_sum = 0col = 0for i in range(M):    s = 0    for j in range(N):        s += a[j][i]    print("%3d" % s, end='')    if s > max_sum:        max_sum = s        col = iprint()print(col+1)">
Питання для самоконтролю. Що означають дужки []? Е змінна my_list ['a','b','c','d']. Яке значення виразу my_list[int('3' * 2)//11]?У змінній list_a міститься список ['a', 'b', 'c', 'd’]. Яке значення виразу list_a[-1]?4. У змінній list_b міститься список ['a', 'b', 'c', 'd’]. Яке значення виразу list_b[:2]?5. У змінній list_c міститься список [2, 4, 6, 8, 10]. Як присвоїти значення 'zero' в якості третього елемента даного списку?6. В чому різниця між функціями append() та insert(), передбаченими для списків?7. Назвіть способи видалення значень із списку.
Дякуємо!mahalaschool.com.ua. Python - це маленький початок великих справ.
Зміст слайдів
Номер слайду 1

Мова програмування PYTHON   Двовимірні масиви. Навчання заради успіху. Вчитель інформатики В. Д. Партіка

Номер слайду 2

Обробка і виведення вкладених списків. Часто в задачах доводиться зберігати прямокутні таблиці з даними. Такі таблиці називаються матрицями або двовимірними масивами.a = [[1, 2, 3], [4, 5, 6]]print(a[0])print(a[1])b = a[0]print(b)print(a[0][2])a[0][1] = 7print(a)print(b)b[2] = 9print(a[0])print(b)[1, 2, 3][4, 5, 6][1, 2, 3]3[[1, 7, 3], [4, 5, 6]][1, 7, 3][1, 7, 9][1, 7, 9]Тут перший рядок списку a [0] є списком з чисел [1, 2, 3]. Тобто a[0][0] == 1, a[0][1] == 2, a[0][2] == 3, a[1][0] == 4, a[1][1] == 5, a[1][2] == 6.

Номер слайду 3

Обробка і виведення вкладених списків. Для обробки і виведення списку, як правило, використовують два вкладених циклу. Перший цикл перебирає номер рядка, другий цикл біжить за елементами всередині рядка. Наприклад, вивести двовимірний числовий список на екран через підрядник, розділяючи числа пробілами всередині одного рядка, можна так:a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]for i in range(len(a)): for j in range(len(a[i])): print(a[i][j], end=‘ ‘) print()1 2 3 45 6 7 8 9

Номер слайду 4

Введення двовимірного масиву. Нехай програма отримує на вхід двовимірний масив, у вигляді n рядків, кожен з яких містить m чисел, розділених пробілами.n = int(input()) a = []for i in range(n): a.append([int(j) for j in input().split()])print(a)Або, без використання складних вкладених викликів функцій:n = int(input()) a = []for i in range(n): row = input().split() for i in range(len(row)): row[i] = int(row[i]) a.append(row)print(a)

Номер слайду 5

Ви можете зробити те ж саме з генераторами:n = int(input())a = [[int(j) for j in input().split()] for i in range(n)]print(a)

Номер слайду 6

Обробка і виведення вкладених списків. Змінна циклу for в Python може перебирати не тільки діапазон, який створюється за допомогою функції range(), але і взагалі перебирати будь-які елементи будь-якій послідовності.a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]for row in a: for elem in row: print(elem, end=‘ ‘) print()1 2 3 4 5 67 8 9 Природно, для виведення одного рядка можна скористатися методом join ():for row in a: print(' '.join([str(elem) for elem in row]))

Номер слайду 7

Обробка і виведення вкладених списків. Використовуємо два вкладених циклу для підрахунку суми всіх чисел в списку:a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]s = 0for i in range(len(a)): for j in range(len(a[i])): s += a[i][j]print(s)45 Або те ж саме з циклом не по індексу, а за значеннями рядків:a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]s = 0for row in a: for elem in row: s += elem # s = s + elemprint(s)

Номер слайду 8

Створення вкладених списків. Нехай дано два числа: кількість рядків n і кількість стовпців m. Необхідно створити список розміром n × m, заповнений нулями. Перший спосіб: спочатку створимо список з n елементів (для початку просто з n нулів). Потім зробимо кожен елемент списку посиланням на інший одновимірний список з m елементів:n = 3m = 4a = [0] * nfor i in range(n): a[i] = [0] * mprint(a)[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]Інший (але схожий) спосіб: створити порожній список, потім n раз додати в нього новий елемент, який є списком-рядком:n = 3m = 4a = []for i in range(n): a.append([0] * m)print(a)

Номер слайду 9

Приклад 1: Створити матрицю A, що складається з N рядків і M стовпців і заповнити її випадковими числами з відрізка [20;80]. Нехай i і j - цілочисельні змінні, що позначають індекси рядка і стовпця.from random import randint. N=3 M=3 A = [ [0]*M for i in range(N) ]for i in range(N): for j in range(M): A[i][j] = randint( 20, 80 )print(A)[[77, 35, 55], [43, 46, 27], [43, 58, 63]] Оскільки людина сприймає матрицю як таблицю, краще і на екран виводити її у вигляді таблиці, для цього можна написати таку процедуру.def print. Matrix( A ): for i in range(len(A)): for j in range(len(A[i])): print( "{:4d}".format(A[i][j]), end="" ) print() Тут i - це номер рядка, а j - номер стовпця; len (A) - це число рядків в матриці, а len (A [i]) - число елементів в рядку i (збігається з числом стовпців).

Номер слайду 10

Можна написати таку функцію і в стилі Python : def print. Matrix ( A ): for row in A: for x in row: print( "{:4}".format(x), end="" ) print( ) Перший цикл перебирає всі рядки в матриці; кожна з них по черзі потрапляє в змінну-масив row. Потім внутрішній цикл перебирає всі елементи цього масиву (рядки) і виводить їх на екран

Номер слайду 11

Перебір елементів матриціКожен елемент матриці має два індекси, тому для перебору всіх елементів потрібно використовувати вкладений цикл. Зазвичай зовнішній цикл перебирає індекси рядків, а внутрішній - індекси стовпців. Ось так можна знайти суму всіх елементів матриці:summa = 0for i in range(N): for j in range(M): summa += A[i][j]print(summa)

Номер слайду 12

Приклад: Дано цілочисельну матрицю випадкових цілих чисел розміром m*n (m і n задаються користувачем). Знайти мінімальний елемент матриці та його індекси. import randomn=int(input('Введіть кількість рядків матриці: '))m=int(input('Введіть кількість стовпців матриці: '))a=[]for i in range(n): b=[] for j in range(m): x=random.randint(10,99) b.append(x) a.append(b)print('Згенерована матриця:',a)for row in a: for elem in row: print(elem, end=' ') print()Введіть кількість рядків матриці: 4 Введіть кількість стовпців матриці: 4 Згенерована матриця:95 27 16 80 52 10 68 12 53 73 12 92 98 97 81 73

Номер слайду 13

Знайти мінімальний елемент матриці та його індекси. Спосіб 1. Розв’язування методом перебору . . . . .min_el=a[0][0]min_i=0min_j=0for i in range(n): for j in range(m): if a[i][j]

Номер слайду 14

Спосіб 2. Розв’язування з використаням методів списків.min_col=list(map(min, a))min_el=min(min_col)min_i=min_col.index(min(min_col))min_j=a[min_i].index(min_el)print('Мінімальний елемент: ',min_el)print('Індекс мінімального елемента[{}, {}]'.format(min_i,min_j)) Введіть кількість рядків матриці: 4 Введіть кількість стовпців матриці: 4 Згенерована матриця:35 28 93 15 95 59 78 60 59 10 72 68 63 54 11 35 Мінімальний елемент: 10Індекс мінімального елемента[2,1]

Номер слайду 15

Спосіб 3. Пошук індексів для всіх мінімумів Якщо ж матриця буде містити декілька рівних елементів, які і будуть мінімальними, то запропоновані способи не підходять . . . . . min_col=list(map(min, a))min_el=min(min_col)print('Мінімальний елемент:',min_el)for i in range(n): for j in range(m): if a[i][j]==min_el: print('Індекс мінімального елемента[{}, {}]'.format(i,j)) Введіть кількість рядків матриці: 4 Введіть кількість стовпців матриці: 4 Згенерована матриця:81 79 14 91 54 67 17 72 62 81 66 61 42 77 59 79 Мінімальний елемент: 14Індекс мінімального елемента[0, 2]

Номер слайду 16

Створити матрицю A, що складається з N рядків і M стовпців і заповнити його випадковими числами, знайти в ньому максимальний елемент і його індекси. Приклад 2:from random import randint. N=int(input("Введите N: "))M=int(input("Введите M: "))def print. A( A ): for row in A: for x in row: print( "{:4}".format(x), end=" " ) print()A = [ [0]*M for i in range(N) ]

Номер слайду 17

for i in range(N): for j in range(M): A[i][j] = randint(0, 20)print. A(A)m=A[0][0]im=0jm=0for i in range(N): for j in range(M): if A[i][j]>m: m=A[i][j] im=i jm=jprint("max=",m, " i=",im, " j=",jm)

Номер слайду 18

Завдання для вирішення: Напишіть програму, яка повинна знайти максимальний і мінімальний елементи матриці розмірності N і M і поміняти їх місцями. 2. Напишіть програму, яка виводить на екран рядок матриці, сума елементів якої найбільша.3. Напишіть програму, яка виводить на екран стовпець матриці, сума елементів якого найменша.

Номер слайду 19

Дана матриця дійсних чисел розміру m x n. Рядок, що містить максимальний елемент масиву, поміняти з рядком, що містить мінімальний елемент. Дана дійсна матриця розміру m x n. Знайти суму найбільших значень елементів її рядків.6. Подсчитать количество отрицательных элементов в каждой строке матрицы размером m х n, элементы которой задаются с помощью датчика случайных чисел. Завдання для вирішення:

Номер слайду 20

Квадратні матриціКвадратна матриця - це двовимірний масив, у якого кількість рядків і кількість стовпціводнакові. Для квадратної матриці використовують поняття «головна діагональ» (сірі клітини на мал. 3, а) і «побічна діагональ» (мал. 3, б)Головна діагональ - це елементи A [0] [0], A [1] [1], ..., A [N-1] [N-1], тобто елементи, у яких номер рядка дорівнює номеру стовпчика. Для перебору цих елементів досить одного циклу:for i in range (N): # Працюємо з A [i][i]мал. 3

Номер слайду 21

Побудувати квадратну матрицю розмірності N = 4, у якій елементи на головній діагоналі дорівнюватимуть одиниці, а інші елементи рівні нулю. Приклад 3. N=3def print. A( A ): for i in range(N): for j in range(N): print( "{:2d}".format(A[i][j]), end=" " ) print()A = [ [0]*N for i in range(N) ]for i in range(N): for j in range(N): Вивід програми: A[i][j] = 0print. A( A )print()for i in range(N): A[i][i]=1print. A( A )

Номер слайду 22

За допомогою генератора легко виділити елементи головної діагоналі в окремий масив: D = [A[i][i] for i in range (N)]A = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]D = [ A[i][i] for i in range(3)]print(D)Вивід:[1, 1, 1] Приклад 4. Елементи побічної діагоналі - це A[0][N-1], A[1][N-2],...,A[N-1][0]. Зауважимо, що сума номерів рядка і стовпця для кожного елемента дорівнює N - 1, тому отримуємо такий цикл перебору:for i in range (N): # Працюємо з A [i] [N-1-i]

Номер слайду 23

Заповнити двовимірний масив випадковими числами і знайти суму елементів, що лежать на побічної діагоналі. Приклад 5.from random import randint. N=int(input("Введіть N: "))def print. A( A ): for row in A: for x in row: print( "{:4}".format(x), end=" " ) print()A = [ [0]*N for i in range(N) ]for i in range(N): for j in range(N): A[i][j] = randint(0, 10)print. A( A )s=0for i in range(N): s +=A[i][N-1-i]print(s) Вивід програми: Введіть N: 4

Номер слайду 24

Для обробки всіх елементів на головній діагоналі і під нею (Мал. 4) потрібен вкладений цикл: номер рядка буде змінюватися від 0 до N - 1, а номер стовпця для кожного рядка i - від 0 до i:for i in range(N): for j in range(i+1): # работаем с A[i][j] Мал. 4, Виділена головна діагональ і всі елементи під нею.

Номер слайду 25

Заповнити двовимірний масив випадковими числами і знайти максимальний елемент серед всіх елементів, що лежать на головній діагоналі і під нею. Приклад 6.from random import randint. N=int(input("Введіть N: "))def print. A( A ): for row in A: for x in row: print( "{:4}".format(x), end=" " ) print()A = [ [0]*N for i in range(N) ]for i in range(N): for j in range(N): A[i][j] = randint(0, 20)print. A( A )max=A[0][0]for i in range(N): for j in range(i+1): if A[i][j]>max: max=A[i][j]print('max=',max) Вивід програми: Введите N: 4

Номер слайду 26

Щоб переставити стовпчики матриці, досить одного циклу. Наприклад, переставимо стовпці з індексами 2 і 4, використовуючи множинне присвоювання в Python: for i in range(N): A[i][2], A[i][4] = A[i][4], A[i][2]Переставити два рядки можна взагалі без циклу, враховуючи, що A [i] - це посилання на список елементів рядка i. Тому досить просто переставити посилання. Оператор: A[0], A[3] = A[3], A[0]переставляє рядки матриці з індексами 0 і 3.

Номер слайду 27

Для того щоб створити копію рядка з індексом i, не можна робити так: R = A [i] # це невірно!тому що при цьому ми отримаємо нову посилання на існуючий рядок. Замість цього потрібно створити копію в пам'яті за допомогою зрізу, що включає всі елементи рядка: R = A [i] [:]Побудувати копію стовпчика з індексом j трохи складніше, так як матриця розташована в пам'яті порядках. У цьому завданні зручно використовувати генератор: C = [row [j] for row in A]У циклі перебираються всі рядки матриці A, вони по черзі потрапляють в змінну-масив row. Генератор вибирає з кожного рядка елемент з індексом j і складає список з цих значень.

Номер слайду 28

Завдання для розв'язання:1. Напишіть програму, яка знаходить максимальний елемент на головній діагоналі квадратної матриці.2. Напишіть програму, яка заповнює матрицю з N рядків і N стовпців нулями і одиницями так, що всі елементи вище побічної діагоналі рівні нулю, а інші - одиниці.3. Дана целочисленная квадратна матриця порядку n. Знайти номери рядків, все елементи якихнулі.4. Дана целочисленная квадратна матриця порядку N. Знайти найбільше із значень елементів,розташованих в заштрихованої частини матриці.5. Дана целочисленная квадратна матриця порядку N. Знайти найбільше із значень елементів, розташованих в заштрихованої частини матриці.6. Дана целочисленная квадратна матриця порядку N. Знайти добуток значень елементів, розташованих в заштрихованої частини матриці.7. Побудувати квадратну матрицю порядку n:8. Побудувати квадратну матрицю порядку n:

Номер слайду 29

Домашнє завдання1. В числовий матриці поміняти місцями два стовпці, т. е. все елементи одного стовпчика поставити на відповідні їм позиції іншого, а елементи другого перемістити в перший.from random import random. M = 10 N = 5a = []for i in range(N):    b = []    for j in range(M):        b.append(round(random()*2))    a.append(b)    print(b)c1 = int(input("Один столбец: ")) - 1c2 = int(input("Другой столбец: ")) - 1for i in range(N):    a[i][c1], a[i][c2] = a[i][c2], a[i][c1]    print(a[i])[2, 1, 2, 2, 1, 0, 2, 1, 0, 1][1, 1, 1, 1, 1, 1, 2, 2, 2, 1][1, 1, 0, 1, 1, 1, 2, 0, 0, 1][0, 0, 0, 2, 0, 0, 1, 2, 1, 2][1, 0, 0, 1, 2, 0, 2, 1, 1, 0]Один стовпчик : 3 Другій стовпчик: 10[2, 1, 1, 2, 1, 0, 2, 1, 0, 2][1, 1, 1, 1, 1, 1, 2, 2, 2, 1][1, 1, 1, 1, 1, 1, 2, 0, 0, 0][0, 0, 2, 2, 0, 0, 1, 2, 1, 0][1, 0, 0, 1, 2, 0, 2, 1, 1, 0]

Номер слайду 30

Домашнє завдання2. Задана матрица неотрицательных чисел. Посчитать сумму элементов в каждом столбце. Определить, какой столбец содержит максимальную сумму.from random import random. M = 10 N = 5a = []for i in range(N):    b = []    for j in range(M):        b.append(int(random()*11))        print("%3d" % b[j], end='')    a.append(b)    print() for i in range(M):    print(" --", end='')print()max_sum = 0col = 0for i in range(M):    s = 0    for j in range(N):        s += a[j][i]    print("%3d" % s, end='')    if s > max_sum:        max_sum = s        col = iprint()print(col+1)

Номер слайду 31

Питання для самоконтролю. Що означають дужки []? Е змінна my_list ['a','b','c','d']. Яке значення виразу my_list[int('3' * 2)//11]?У змінній list_a міститься список ['a', 'b', 'c', 'd’]. Яке значення виразу list_a[-1]?4. У змінній list_b міститься список ['a', 'b', 'c', 'd’]. Яке значення виразу list_b[:2]?5. У змінній list_c міститься список [2, 4, 6, 8, 10]. Як присвоїти значення 'zero' в якості третього елемента даного списку?6. В чому різниця між функціями append() та insert(), передбаченими для списків?7. Назвіть способи видалення значень із списку.

Номер слайду 32

Дякуємо!mahalaschool.com.ua. Python - це маленький початок великих справ.

Середня оцінка розробки
Структурованість
5.0
Оригінальність викладу
4.5
Відповідність темі
5.0
Загальна:
4.9
Всього відгуків: 2
Оцінки та відгуки
  1. Матузна Ксенія Олександрівна
    Загальна:
    4.7
    Структурованість
    5.0
    Оригінальність викладу
    4.0
    Відповідність темі
    5.0
  2. Хабалевська Вікторія Віталіївна
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
pptx
Додано
20 березня 2021
Переглядів
22484
Оцінка розробки
4.9 (2 відгука)
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку