Використання генераторів списків для матричних операцій. Приклади
Зміст
- 1. Особливості застосування генераторів списків для матриць
- 2. Приклади розв’язку задач з використанням генераторів списків
- Споріднені теми
Пошук на інших ресурсах:
1. Особливості застосування генераторів списків для матриць
Генератори списків зручно використовувати для матриць (багатовимірних масивів) чисел заданої розмірності. Матриці можна представляти у вигляді кортежів чи списків.
Найкраще матриці представляти у вигляді вкладених списків. У найбільш загальному випадку, представлення двовимірної матриці у вигляді списку на мові Python має такий вигляд
MatrixName = [ [ a11, a12, ..., a1n ], [ a21, a22, ..., a2n ], ... [ am1, am2, ..., amn ] ]
тут
- MatrixName – ім’я матриці;
- a11, …, amn – елементи матриці. Це можуть бути числа, числа з плаваючою комою, символи, рядки, логічні значення (true, false). Також це можуть бути більш складні об’єкти, як наприклад, ті самі списки, кортежі чи множини.
Саме генератори списків є найбільш зручними для обробки матриць будь-якої розмірності, оскільки вони дозволяють автоматично сканувати рядки та стовпці матриць.
⇑
2. Приклади розв’язку задач з використанням генераторів списків
2.1. Задачі на побудову матриць
2.1.1. Побудова матриці заданої розмірності. Елементи матриці формуються випадковим чином
Умова задачі. Побудувати матрицю заданої розмірності m×n та вивести її на екран. Елементи матриці формуються випадково і мають значення від 1 до 10 включно.
Розв’язок .
# Генератори списків # Задача. # Сформувати матрицю розміром m*n, # де m, n вводяться з клавіатури. # 1. Підключити модуль random для формування # випадкових чисел import random # 2. Ввести розмірність матриці m = input('m = ') n = input('n = ') # 3. Сформувати матрицю розміром m*n. # Значення елементів матриці формуються # випадковим чином в межах [1, 10]. Matrix = [ [ random.randint(1, 11) for j in range(n)] for i in range(m) ] print('Matrix:') # 4. Вивести результат for i in range(m): print(Matrix[i])
Результат виконання програми
m = 4 n = 5 Matrix: [10, 2, 3, 8, 7] [6, 9, 2, 7, 11] [2, 5, 9, 10, 4] [10, 10, 11, 5, 10]
⇑
2.1.2. Формування двовимірної матриці заданої розмірності. Елементи матриці вводяться з клавіатури
Умова задачі. Сформувати матрицю розміром m×n. Значення розмірів m, n та значення елементів вводяться з клавіатури.
Розв’язок.
# Генератори списків # Задача. # Сформувати матрицю розміром m*n, # де m, n вводяться з клавіатури. # Елементи матриці вводяться з клавіатури. # 1. Ввести розмірність матриці m = input('m = ') n = input('n = ') # 2. Сформувати матрицю розміром m*n. # Значення елементів матриці вводяться з клавіатури. Matrix = [ [ input("M["+str(i)+"]["+str(j)+"]=") for j in range(n) ] for i in range(m) ] # 3. Вивести результат print('Matrix:') for i in range(m): print(Matrix[i])
Результат виконання програми
m = 2 n = 3 M[0][0]=1 M[0][1]=2 M[0][2]=3 M[1][0]=4 M[1][1]=5 M[1][2]=6 Matrix: [1, 2, 3] [4, 5, 6]
⇑
2.2. Задачі на обробку даних, що розміщуються в матриці
2.2.1. Обчислення кількості елементів матриці, які більше 5
Умова задачі. Побудувати матрицю цілих чисел розмірністю m×n, де m – кількість рядків матриці, n – кількість стовпців матриці. Значення m та n вводяться з клавіатури. Числа у матриці формуються випадковим чином і знаходяться в межах від 1 до 10. Використовуючи генератор списків обчислити кількість елементів матриці, які більше 5.
Розв’язок.
# Генератори списків # Задача. # Побудувати матрицю цілих чисел заданої розмірності m*n. # З допомогою генератора випадкових чисел обчислити # к-сть елементів матриці, які більше 5. # 1. Підключити модуль random import random # 2. Ввід розмірів матриці m = input("m = ") # к-сть рядків n = input("n = ") # к-сть стовпчиків # 3. Формування матриці розміром m*n випадковим чином # з допомогою циклу for Matrix = [] # Зовнішній цикл формування матриці Matrix for i in range(m): # Створити рядок матриці у вигляді списку row = [] # Внутрішній цикл формування рядка row for j in range(n): # Сформувати випадкове число від 1 до 10 randNumber = random.randint(1, 11) # Додати випадкове число до списку row row.append(randNumber) # Додати рядок row до матриці Matrix Matrix.append(row) # 4. Вивести сформовану матрицю Matrix для контролю print('Matrix M:') for i in range(m): print(Matrix[i]) # 5. З допомогою генератора списків обчислити к-сть елементів, які більше 5 count = len([ Matrix[i][j] for i in range(m) for j in range(n) if Matrix[i][j]>5 ]) print(count)
Результат виконання програми
m = 3 n = 4 Matrix M: [10, 4, 3, 4] [3, 3, 10, 2] [11, 9, 1, 4] 4
⇑
2.2.2. Задача. Обчислення суми елементів матриці згідно з умовою
Умова задачі. Задано двовимірний масив цілих чисел розміром m×n. Визначити суму елементів масиву, які знаходяться в межах [5; 10]. Елементи масиву вводяться з клавіатури.
Розв’язок.
При формуванні генератора списку, для обчислення суми використовується функція sum().
# Генератори списків # Задача. # Обчислити суму елементів матриці, які знаходяться в діапазоні [5; 10]. # Розмір матриці m, n та значення елементів вводяться з клавіатури. # 1. Ввести розмірність матриці m = input('m = ') n = input('n = ') # 2. Сформувати матрицю розміром m*n. # Значення елементів матриці вводяться з клавіатури. Matrix = [ [ input("M["+str(i)+"]["+str(j)+"]=") for j in range(n) ] for i in range(m) ] # 3. Обчислити суму - використати генератор списків summ = sum( Matrix[i][j] for i in range(m) for j in range(n) if (Matrix[i][j]>=5)and(Matrix[i][j]<=10)) print("summ = ", summ)
Тестовий приклад
m = 2 n = 3 M[0][0]=3 M[0][1]=6 M[0][2]=2 M[1][0]=7 M[1][1]=1 M[1][2]=9 summ = 22
⇑
2.3. Задачі на створення нових матриць на основі заданих
2.3.1. Створити третю матрицю C на основі двох матриць A, B
Умова задачі. Задано дві матриці A, B дійсних чисел. Розмірність матриць m×n. Використовуючи генератор списків сформувати третю матрицю C, кожен елемент cij якої визначається за правилом
cij = aij + bij
Розв’язок.
# Генератори списків # Задача. # На основі матриць A, B сформувати третю матрицю C. # 1. Підключити модуль random для формування випадкових чисел import random # 2. Ввести розмірність матриць A, B m = input('m = ') n = input('n = ') # 3. Сформувати матриці A та B розміром m*n. # Значення елементів матриць генеруються випадковим чином # і знаходяться в межах [ 1; 100] A = [ [random.randint(1, 101) for j in range(n)] for i in range(m) ] B = [ [random.randint(1, 100) for j in range(n)] for i in range(m) ] # 4. Сформувати третю матрицю C C = [ [ A[i][j]+B[i][j] for j in range(n) ] for i in range(m) ] # 5. Вивести матрицю A для контролю print('-------------------------') print("A:") for i in range(m): print(A[i]) # 6. Вивести матрицю B для контролю print('B:') for i in range(m): print(B[i]) # 7. Вивести матрицю C print('C:') for i in range(m): print(C[i])
Тестовий приклад
m = 4 n = 6 ------------------------- A: [91, 25, 72, 95, 53, 97] [14, 53, 36, 66, 36, 48] [78, 57, 69, 97, 51, 39] [42, 47, 53, 47, 21, 34] B: [48, 73, 25, 13, 92, 22] [45, 56, 95, 64, 43, 89] [43, 44, 11, 29, 82, 32] [95, 87, 33, 90, 67, 79] C: [139, 98, 97, 108, 145, 119] [59, 109, 131, 130, 79, 137] [121, 101, 80, 126, 133, 71] [137, 134, 86, 137, 88, 113]
⇑
2.3.2. Створити результуючу матрицю на основі вихідної згідно з заданою умовою
Умова задачі. Задано квадратну матрицю A цілих чисел розмірністю n. На основі матриці A утворити матрицю B кожен елементи якої визначається за правилом:
B[i][j] = A[i][j] + 10
Для отримання результуючої матриці B використати генератор списку.
Розв’язок.
# Генератори списків # Задача. # На основі матриці A утворити матрицю B за правилом: # B[i][j] = A[i][j] + 10 # 1. Підключити модуль random для формування випадкових чисел import random # 2. Ввести розмірність матриці A m = int(input('m = ')) n = int(input('n = ')) # 3. Сформувати матрицю A розміром m*n # Значення елементів матриці генеруються випадковим чином # і знаходяться в межах [ -10; 10] A = [ [random.randint(-10, 11) for j in range(n)] for i in range(m) ] # 4. Вивести матрицю A для контролю print('-------------------------') print("A:") for i in range(m): print(A[i]) # 5. Формування матриці B з допомогою генератора списку B = [ [ A[i][j]+10 for j in range(n) ] for i in range(m) ] # 6. Вивести результуючу матрицю B print("B:") for i in range(m): print(B[i])
Тестовий приклад
m = 3 n = 5 ------------------------- A: [-4, 10, -5, 2, -6] [10, -3, 5, 10, -7] [7, -9, -3, -3, 11] B: [6, 20, 5, 12, 4] [20, 7, 15, 20, 3] [17, 1, 7, 7, 21]
⇑
Споріднені теми
⇑