Bài toán: cho hai ma trận, nhân chúng và in kết quả. Điều kiện: số cột ma trận đầu = số hàng ma trận thứ hai.
Cách 1: Brute-force (ba vòng lặp lồng)
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
B = [[5, 3, 3], [6, 5, 4], [0, 2, 0]]
result = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(B)):
result[i][j] += A[i][k] * B[k][j]
for ele in result:
print(ele)
[17, 19, 11] [50, 49, 32] [83, 79, 53]
Cách 2: Dùng hàm zip
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
B = [[5, 3, 3], [6, 5, 4], [0, 2, 0]]
result = [[sum(a * b for a, b in zip(A_row, B_col))
for B_col in zip(*B)]
for A_row in A]
for ele in result:
print(ele)
[17, 19, 11] [50, 49, 32] [83, 79, 53]
Kết luận
Đã học nhân hai ma trận trong Python.